./Ultimate.py --spec ../../sv-benchmarks/c/properties/unreach-call.prp --file ../../sv-benchmarks/c/ldv-regression/test23_false-unreach-call.c --full-output --architecture 32bit -------------------------------------------------------------------------------- Checking for ERROR reachability Using default analysis Version aa418289 Calling Ultimate with: java -Dosgi.configuration.area=/tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/config/AutomizerReach.xml -i ../../sv-benchmarks/c/ldv-regression/test23_false-unreach-call.c -s /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Default.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer --witnessprinter.witness.filename witness.graphml --witnessprinter.write.witness.besides.input.file false --witnessprinter.graph.data.specification CHECK( init(main()), LTL(G ! call(__VERIFIER_error())) ) --witnessprinter.graph.data.producer Automizer --witnessprinter.graph.data.architecture 32bit --witnessprinter.graph.data.programhash b974f281a213c0803f91ef44d205e442fb2a5f8f .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. Execution finished normally Writing output log to file Ultimate.log Writing human readable error path to file UltimateCounterExample.errorpath Result: FALSE --- Real Ultimate output --- This is Ultimate 0.1.23-aa41828 [2018-11-23 01:22:16,835 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 01:22:16,836 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 01:22:16,842 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 01:22:16,842 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 01:22:16,843 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 01:22:16,844 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 01:22:16,845 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 01:22:16,846 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 01:22:16,846 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 01:22:16,847 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 01:22:16,847 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 01:22:16,848 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 01:22:16,848 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 01:22:16,849 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 01:22:16,849 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 01:22:16,850 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 01:22:16,850 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 01:22:16,852 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 01:22:16,852 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 01:22:16,853 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 01:22:16,854 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 01:22:16,856 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 01:22:16,856 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 01:22:16,856 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 01:22:16,856 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 01:22:16,857 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 01:22:16,857 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 01:22:16,858 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 01:22:16,858 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 01:22:16,858 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 01:22:16,859 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 01:22:16,859 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 01:22:16,859 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 01:22:16,859 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 01:22:16,860 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 01:22:16,860 INFO L98 SettingsManager]: Beginning loading settings from /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Default.epf [2018-11-23 01:22:16,869 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 01:22:16,869 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 01:22:16,870 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 01:22:16,870 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 01:22:16,871 INFO L131 SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults: [2018-11-23 01:22:16,871 INFO L133 SettingsManager]: * Create parallel compositions if possible=false [2018-11-23 01:22:16,871 INFO L133 SettingsManager]: * Use SBE=true [2018-11-23 01:22:16,871 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 01:22:16,871 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 01:22:16,871 INFO L133 SettingsManager]: * Overapproximate operations on floating types=true [2018-11-23 01:22:16,871 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 01:22:16,872 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 01:22:16,873 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 01:22:16,873 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 01:22:16,873 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 01:22:16,873 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 01:22:16,873 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 01:22:16,873 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 01:22:16,873 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 01:22:16,874 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 01:22:16,874 INFO L133 SettingsManager]: * Trace refinement strategy=CAMEL [2018-11-23 01:22:16,874 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 01:22:16,874 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in [2018-11-23 01:22:16,874 INFO L133 SettingsManager]: * Compute Hoare Annotation of negated interpolant automaton, abstraction and CFG=true Applying setting for plugin de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator: Entry function -> main Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Witness directory -> /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Witness filename -> witness.graphml Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Write witness besides input file -> false Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data specification -> CHECK( init(main()), LTL(G ! call(__VERIFIER_error())) ) Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data producer -> Automizer Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data architecture -> 32bit Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Graph data programhash -> b974f281a213c0803f91ef44d205e442fb2a5f8f [2018-11-23 01:22:16,900 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 01:22:16,908 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 01:22:16,911 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 01:22:16,912 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 01:22:16,912 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 01:22:16,913 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/../../sv-benchmarks/c/ldv-regression/test23_false-unreach-call.c [2018-11-23 01:22:16,951 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/data/39ca09114/d58e27e94bc8494a8ac82a37f1db41f3/FLAG8e7e23081 [2018-11-23 01:22:17,367 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 01:22:17,367 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/sv-benchmarks/c/ldv-regression/test23_false-unreach-call.c [2018-11-23 01:22:17,372 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/data/39ca09114/d58e27e94bc8494a8ac82a37f1db41f3/FLAG8e7e23081 [2018-11-23 01:22:17,389 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/data/39ca09114/d58e27e94bc8494a8ac82a37f1db41f3 [2018-11-23 01:22:17,391 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 01:22:17,393 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 01:22:17,393 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 01:22:17,393 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 01:22:17,396 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 01:22:17,397 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,399 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@72baf56d and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17, skipping insertion in model container [2018-11-23 01:22:17,399 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,407 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 01:22:17,423 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 01:22:17,536 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 01:22:17,544 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 01:22:17,555 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 01:22:17,567 INFO L195 MainTranslator]: Completed translation [2018-11-23 01:22:17,567 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17 WrapperNode [2018-11-23 01:22:17,567 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 01:22:17,568 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 01:22:17,568 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 01:22:17,568 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 01:22:17,572 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,578 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,619 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 01:22:17,619 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 01:22:17,619 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 01:22:17,619 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 01:22:17,628 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,628 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,630 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,630 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,638 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,641 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,642 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... [2018-11-23 01:22:17,643 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 01:22:17,643 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 01:22:17,643 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 01:22:17,643 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 01:22:17,644 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/z3 Starting monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 01:22:17,675 INFO L130 BoogieDeclarations]: Found specification of procedure init [2018-11-23 01:22:17,675 INFO L138 BoogieDeclarations]: Found implementation of procedure init [2018-11-23 01:22:17,676 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 01:22:17,676 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 01:22:17,676 INFO L130 BoogieDeclarations]: Found specification of procedure write~init~int [2018-11-23 01:22:17,676 INFO L130 BoogieDeclarations]: Found specification of procedure check [2018-11-23 01:22:17,676 INFO L138 BoogieDeclarations]: Found implementation of procedure check [2018-11-23 01:22:17,676 INFO L130 BoogieDeclarations]: Found specification of procedure write~int [2018-11-23 01:22:17,676 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 01:22:17,676 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 01:22:17,676 INFO L130 BoogieDeclarations]: Found specification of procedure #Ultimate.alloc [2018-11-23 01:22:17,677 INFO L130 BoogieDeclarations]: Found specification of procedure get_dummy [2018-11-23 01:22:17,677 INFO L138 BoogieDeclarations]: Found implementation of procedure get_dummy [2018-11-23 01:22:17,677 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 01:22:17,677 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 01:22:17,677 INFO L130 BoogieDeclarations]: Found specification of procedure read~int [2018-11-23 01:22:17,826 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 01:22:17,826 INFO L280 CfgBuilder]: Removed 1 assue(true) statements. [2018-11-23 01:22:17,827 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:22:17 BoogieIcfgContainer [2018-11-23 01:22:17,827 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 01:22:17,827 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 01:22:17,827 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 01:22:17,830 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 01:22:17,830 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 01:22:17" (1/3) ... [2018-11-23 01:22:17,831 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@20a83060 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 01:22:17, skipping insertion in model container [2018-11-23 01:22:17,831 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:22:17" (2/3) ... [2018-11-23 01:22:17,831 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@20a83060 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 01:22:17, skipping insertion in model container [2018-11-23 01:22:17,831 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:22:17" (3/3) ... [2018-11-23 01:22:17,832 INFO L112 eAbstractionObserver]: Analyzing ICFG test23_false-unreach-call.c [2018-11-23 01:22:17,840 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 01:22:17,846 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 01:22:17,858 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 01:22:17,882 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 01:22:17,883 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 01:22:17,883 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 01:22:17,883 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 01:22:17,883 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 01:22:17,883 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 01:22:17,883 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 01:22:17,883 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 01:22:17,884 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 01:22:17,897 INFO L276 IsEmpty]: Start isEmpty. Operand 33 states. [2018-11-23 01:22:17,900 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 31 [2018-11-23 01:22:17,900 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:17,901 INFO L402 BasicCegarLoop]: trace histogram [2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:17,903 INFO L423 AbstractCegarLoop]: === Iteration 1 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:17,906 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:17,906 INFO L82 PathProgramCache]: Analyzing trace with hash 1787337799, now seen corresponding path program 1 times [2018-11-23 01:22:17,907 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:17,907 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:17,935 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:17,935 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:17,935 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:17,988 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:18,041 INFO L134 CoverageAnalysis]: Checked inductivity of 4 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:18,043 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 01:22:18,043 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [2] imperfect sequences [] total 2 [2018-11-23 01:22:18,046 INFO L459 AbstractCegarLoop]: Interpolant automaton has 2 states [2018-11-23 01:22:18,053 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 2 interpolants. [2018-11-23 01:22:18,053 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=1, Invalid=1, Unknown=0, NotChecked=0, Total=2 [2018-11-23 01:22:18,055 INFO L87 Difference]: Start difference. First operand 33 states. Second operand 2 states. [2018-11-23 01:22:18,068 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:18,068 INFO L93 Difference]: Finished difference Result 46 states and 51 transitions. [2018-11-23 01:22:18,068 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 2 states. [2018-11-23 01:22:18,069 INFO L78 Accepts]: Start accepts. Automaton has 2 states. Word has length 30 [2018-11-23 01:22:18,069 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:18,074 INFO L225 Difference]: With dead ends: 46 [2018-11-23 01:22:18,074 INFO L226 Difference]: Without dead ends: 28 [2018-11-23 01:22:18,077 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 2 GetRequests, 2 SyntacticMatches, 0 SemanticMatches, 0 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=1, Invalid=1, Unknown=0, NotChecked=0, Total=2 [2018-11-23 01:22:18,088 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 28 states. [2018-11-23 01:22:18,101 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 28 to 28. [2018-11-23 01:22:18,102 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 28 states. [2018-11-23 01:22:18,102 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 28 states to 28 states and 30 transitions. [2018-11-23 01:22:18,103 INFO L78 Accepts]: Start accepts. Automaton has 28 states and 30 transitions. Word has length 30 [2018-11-23 01:22:18,104 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:18,104 INFO L480 AbstractCegarLoop]: Abstraction has 28 states and 30 transitions. [2018-11-23 01:22:18,104 INFO L481 AbstractCegarLoop]: Interpolant automaton has 2 states. [2018-11-23 01:22:18,105 INFO L276 IsEmpty]: Start isEmpty. Operand 28 states and 30 transitions. [2018-11-23 01:22:18,106 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 32 [2018-11-23 01:22:18,106 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:18,106 INFO L402 BasicCegarLoop]: trace histogram [2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:18,106 INFO L423 AbstractCegarLoop]: === Iteration 2 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:18,107 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:18,107 INFO L82 PathProgramCache]: Analyzing trace with hash 1425990092, now seen corresponding path program 1 times [2018-11-23 01:22:18,107 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:18,107 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:18,108 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:18,108 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:18,108 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:18,208 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:18,778 WARN L180 SmtUtils]: Spent 100.00 ms on a formula simplification. DAG size of input: 167 DAG size of output: 27 [2018-11-23 01:22:18,834 INFO L134 CoverageAnalysis]: Checked inductivity of 4 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:18,835 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 01:22:18,835 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [12] imperfect sequences [] total 12 [2018-11-23 01:22:18,836 INFO L459 AbstractCegarLoop]: Interpolant automaton has 12 states [2018-11-23 01:22:18,836 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 12 interpolants. [2018-11-23 01:22:18,837 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=24, Invalid=108, Unknown=0, NotChecked=0, Total=132 [2018-11-23 01:22:18,837 INFO L87 Difference]: Start difference. First operand 28 states and 30 transitions. Second operand 12 states. [2018-11-23 01:22:19,226 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:19,227 INFO L93 Difference]: Finished difference Result 54 states and 60 transitions. [2018-11-23 01:22:19,227 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 11 states. [2018-11-23 01:22:19,227 INFO L78 Accepts]: Start accepts. Automaton has 12 states. Word has length 31 [2018-11-23 01:22:19,227 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:19,229 INFO L225 Difference]: With dead ends: 54 [2018-11-23 01:22:19,229 INFO L226 Difference]: Without dead ends: 46 [2018-11-23 01:22:19,230 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 23 GetRequests, 2 SyntacticMatches, 3 SemanticMatches, 18 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 43 ImplicationChecksByTransitivity, 0.6s TimeCoverageRelationStatistics Valid=78, Invalid=302, Unknown=0, NotChecked=0, Total=380 [2018-11-23 01:22:19,230 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 46 states. [2018-11-23 01:22:19,235 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 46 to 37. [2018-11-23 01:22:19,235 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 37 states. [2018-11-23 01:22:19,236 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 37 states to 37 states and 42 transitions. [2018-11-23 01:22:19,236 INFO L78 Accepts]: Start accepts. Automaton has 37 states and 42 transitions. Word has length 31 [2018-11-23 01:22:19,236 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:19,236 INFO L480 AbstractCegarLoop]: Abstraction has 37 states and 42 transitions. [2018-11-23 01:22:19,236 INFO L481 AbstractCegarLoop]: Interpolant automaton has 12 states. [2018-11-23 01:22:19,236 INFO L276 IsEmpty]: Start isEmpty. Operand 37 states and 42 transitions. [2018-11-23 01:22:19,237 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 32 [2018-11-23 01:22:19,237 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:19,237 INFO L402 BasicCegarLoop]: trace histogram [2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:19,237 INFO L423 AbstractCegarLoop]: === Iteration 3 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:19,237 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:19,238 INFO L82 PathProgramCache]: Analyzing trace with hash 1848691918, now seen corresponding path program 1 times [2018-11-23 01:22:19,238 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:19,238 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:19,238 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:19,239 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:19,239 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:19,246 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:19,301 INFO L134 CoverageAnalysis]: Checked inductivity of 4 backedges. 0 proven. 3 refuted. 0 times theorem prover too weak. 1 trivial. 0 not checked. [2018-11-23 01:22:19,302 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 01:22:19,302 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/z3 Starting monitored process 2 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 2 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 01:22:19,310 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:19,349 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:19,357 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 01:22:19,382 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 1 stores, 0 select indices, 0 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 11 treesize of output 14 [2018-11-23 01:22:19,397 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 0 stores, 2 select indices, 2 select index equivalence classes, 1 disjoint index pairs (out of 1 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 11 treesize of output 1 [2018-11-23 01:22:19,397 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:19,398 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:19,401 INFO L267 ElimStorePlain]: Start of recursive call 1: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:19,402 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 1 variables, input treesize:11, output treesize:4 [2018-11-23 01:22:19,442 INFO L134 CoverageAnalysis]: Checked inductivity of 4 backedges. 0 proven. 4 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 01:22:19,456 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 01:22:19,456 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [11, 11] total 13 [2018-11-23 01:22:19,457 INFO L459 AbstractCegarLoop]: Interpolant automaton has 13 states [2018-11-23 01:22:19,457 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 13 interpolants. [2018-11-23 01:22:19,457 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=27, Invalid=129, Unknown=0, NotChecked=0, Total=156 [2018-11-23 01:22:19,458 INFO L87 Difference]: Start difference. First operand 37 states and 42 transitions. Second operand 13 states. [2018-11-23 01:22:19,627 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:19,627 INFO L93 Difference]: Finished difference Result 56 states and 62 transitions. [2018-11-23 01:22:19,628 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 11 states. [2018-11-23 01:22:19,628 INFO L78 Accepts]: Start accepts. Automaton has 13 states. Word has length 31 [2018-11-23 01:22:19,628 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:19,629 INFO L225 Difference]: With dead ends: 56 [2018-11-23 01:22:19,629 INFO L226 Difference]: Without dead ends: 44 [2018-11-23 01:22:19,631 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 47 GetRequests, 30 SyntacticMatches, 0 SemanticMatches, 17 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 26 ImplicationChecksByTransitivity, 0.1s TimeCoverageRelationStatistics Valid=55, Invalid=287, Unknown=0, NotChecked=0, Total=342 [2018-11-23 01:22:19,631 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 44 states. [2018-11-23 01:22:19,635 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 44 to 37. [2018-11-23 01:22:19,635 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 37 states. [2018-11-23 01:22:19,636 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 37 states to 37 states and 41 transitions. [2018-11-23 01:22:19,636 INFO L78 Accepts]: Start accepts. Automaton has 37 states and 41 transitions. Word has length 31 [2018-11-23 01:22:19,636 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:19,636 INFO L480 AbstractCegarLoop]: Abstraction has 37 states and 41 transitions. [2018-11-23 01:22:19,636 INFO L481 AbstractCegarLoop]: Interpolant automaton has 13 states. [2018-11-23 01:22:19,636 INFO L276 IsEmpty]: Start isEmpty. Operand 37 states and 41 transitions. [2018-11-23 01:22:19,637 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 32 [2018-11-23 01:22:19,637 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:19,637 INFO L402 BasicCegarLoop]: trace histogram [2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:19,637 INFO L423 AbstractCegarLoop]: === Iteration 4 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:19,638 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:19,638 INFO L82 PathProgramCache]: Analyzing trace with hash 568828240, now seen corresponding path program 1 times [2018-11-23 01:22:19,638 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:19,638 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:19,638 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:19,639 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:19,639 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:19,672 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:20,094 WARN L180 SmtUtils]: Spent 143.00 ms on a formula simplification. DAG size of input: 172 DAG size of output: 31 [2018-11-23 01:22:20,135 INFO L134 CoverageAnalysis]: Checked inductivity of 4 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:20,135 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 01:22:20,135 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [12] imperfect sequences [] total 12 [2018-11-23 01:22:20,135 INFO L459 AbstractCegarLoop]: Interpolant automaton has 12 states [2018-11-23 01:22:20,135 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 12 interpolants. [2018-11-23 01:22:20,135 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=24, Invalid=108, Unknown=0, NotChecked=0, Total=132 [2018-11-23 01:22:20,135 INFO L87 Difference]: Start difference. First operand 37 states and 41 transitions. Second operand 12 states. [2018-11-23 01:22:20,470 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:20,470 INFO L93 Difference]: Finished difference Result 54 states and 59 transitions. [2018-11-23 01:22:20,470 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 11 states. [2018-11-23 01:22:20,471 INFO L78 Accepts]: Start accepts. Automaton has 12 states. Word has length 31 [2018-11-23 01:22:20,471 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:20,471 INFO L225 Difference]: With dead ends: 54 [2018-11-23 01:22:20,471 INFO L226 Difference]: Without dead ends: 46 [2018-11-23 01:22:20,472 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 23 GetRequests, 2 SyntacticMatches, 3 SemanticMatches, 18 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 43 ImplicationChecksByTransitivity, 0.5s TimeCoverageRelationStatistics Valid=78, Invalid=302, Unknown=0, NotChecked=0, Total=380 [2018-11-23 01:22:20,472 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 46 states. [2018-11-23 01:22:20,475 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 46 to 35. [2018-11-23 01:22:20,476 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 35 states. [2018-11-23 01:22:20,476 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 35 states to 35 states and 39 transitions. [2018-11-23 01:22:20,476 INFO L78 Accepts]: Start accepts. Automaton has 35 states and 39 transitions. Word has length 31 [2018-11-23 01:22:20,476 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:20,476 INFO L480 AbstractCegarLoop]: Abstraction has 35 states and 39 transitions. [2018-11-23 01:22:20,477 INFO L481 AbstractCegarLoop]: Interpolant automaton has 12 states. [2018-11-23 01:22:20,477 INFO L276 IsEmpty]: Start isEmpty. Operand 35 states and 39 transitions. [2018-11-23 01:22:20,477 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 34 [2018-11-23 01:22:20,477 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:20,477 INFO L402 BasicCegarLoop]: trace histogram [2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:20,477 INFO L423 AbstractCegarLoop]: === Iteration 5 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:20,478 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:20,478 INFO L82 PathProgramCache]: Analyzing trace with hash -957154489, now seen corresponding path program 1 times [2018-11-23 01:22:20,478 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:20,478 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:20,478 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:20,479 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:20,479 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:20,519 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:21,042 INFO L134 CoverageAnalysis]: Checked inductivity of 6 backedges. 0 proven. 2 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:21,042 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 01:22:21,042 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/z3 Starting monitored process 3 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 3 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 01:22:21,048 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:21,066 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:21,069 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 01:22:21,171 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 1 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 16 treesize of output 13 [2018-11-23 01:22:21,173 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 1 stores, 0 select indices, 0 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 13 treesize of output 12 [2018-11-23 01:22:21,173 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:21,174 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:21,181 INFO L267 ElimStorePlain]: Start of recursive call 1: 2 dim-0 vars, 1 dim-2 vars, End of recursive call: 2 dim-0 vars, and 1 xjuncts. [2018-11-23 01:22:21,181 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 3 variables, input treesize:44, output treesize:40 [2018-11-23 01:22:21,243 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 38 treesize of output 32 [2018-11-23 01:22:21,246 INFO L683 Elim1Store]: detected equality via solver [2018-11-23 01:22:21,247 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 0 stores, 2 select indices, 2 select index equivalence classes, 0 disjoint index pairs (out of 1 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 32 treesize of output 21 [2018-11-23 01:22:21,247 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:21,250 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:21,254 INFO L267 ElimStorePlain]: Start of recursive call 1: 3 dim-0 vars, 1 dim-2 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:21,255 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 4 variables, input treesize:44, output treesize:5 [2018-11-23 01:22:21,278 INFO L134 CoverageAnalysis]: Checked inductivity of 6 backedges. 0 proven. 5 refuted. 0 times theorem prover too weak. 1 trivial. 0 not checked. [2018-11-23 01:22:21,293 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 01:22:21,294 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [14, 14] total 23 [2018-11-23 01:22:21,294 INFO L459 AbstractCegarLoop]: Interpolant automaton has 23 states [2018-11-23 01:22:21,294 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 23 interpolants. [2018-11-23 01:22:21,294 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=62, Invalid=444, Unknown=0, NotChecked=0, Total=506 [2018-11-23 01:22:21,295 INFO L87 Difference]: Start difference. First operand 35 states and 39 transitions. Second operand 23 states. [2018-11-23 01:22:21,864 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:21,864 INFO L93 Difference]: Finished difference Result 60 states and 66 transitions. [2018-11-23 01:22:21,865 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 17 states. [2018-11-23 01:22:21,865 INFO L78 Accepts]: Start accepts. Automaton has 23 states. Word has length 33 [2018-11-23 01:22:21,866 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:21,866 INFO L225 Difference]: With dead ends: 60 [2018-11-23 01:22:21,866 INFO L226 Difference]: Without dead ends: 52 [2018-11-23 01:22:21,867 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 63 GetRequests, 22 SyntacticMatches, 6 SemanticMatches, 35 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 246 ImplicationChecksByTransitivity, 0.9s TimeCoverageRelationStatistics Valid=210, Invalid=1122, Unknown=0, NotChecked=0, Total=1332 [2018-11-23 01:22:21,867 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 52 states. [2018-11-23 01:22:21,875 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 52 to 41. [2018-11-23 01:22:21,875 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 41 states. [2018-11-23 01:22:21,876 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 41 states to 41 states and 45 transitions. [2018-11-23 01:22:21,876 INFO L78 Accepts]: Start accepts. Automaton has 41 states and 45 transitions. Word has length 33 [2018-11-23 01:22:21,876 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:21,876 INFO L480 AbstractCegarLoop]: Abstraction has 41 states and 45 transitions. [2018-11-23 01:22:21,876 INFO L481 AbstractCegarLoop]: Interpolant automaton has 23 states. [2018-11-23 01:22:21,876 INFO L276 IsEmpty]: Start isEmpty. Operand 41 states and 45 transitions. [2018-11-23 01:22:21,877 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 34 [2018-11-23 01:22:21,877 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:21,879 INFO L402 BasicCegarLoop]: trace histogram [2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:21,879 INFO L423 AbstractCegarLoop]: === Iteration 6 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:21,879 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:21,879 INFO L82 PathProgramCache]: Analyzing trace with hash -55973429, now seen corresponding path program 1 times [2018-11-23 01:22:21,879 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:21,880 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:21,880 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:21,880 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:21,880 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:21,912 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:22,299 WARN L180 SmtUtils]: Spent 167.00 ms on a formula simplification. DAG size of input: 166 DAG size of output: 26 [2018-11-23 01:22:22,387 INFO L134 CoverageAnalysis]: Checked inductivity of 6 backedges. 0 proven. 2 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:22,387 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 01:22:22,387 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/z3 Starting monitored process 4 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 4 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 01:22:22,400 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:22,427 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:22,430 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 01:22:22,549 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 1 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 16 treesize of output 13 [2018-11-23 01:22:22,551 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 1 stores, 0 select indices, 0 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 13 treesize of output 12 [2018-11-23 01:22:22,551 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:22,553 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:22,561 INFO L267 ElimStorePlain]: Start of recursive call 1: 2 dim-0 vars, 1 dim-2 vars, End of recursive call: 2 dim-0 vars, and 1 xjuncts. [2018-11-23 01:22:22,561 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 3 variables, input treesize:63, output treesize:59 [2018-11-23 01:22:22,607 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 34 treesize of output 28 [2018-11-23 01:22:22,610 INFO L683 Elim1Store]: detected equality via solver [2018-11-23 01:22:22,611 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 0 stores, 2 select indices, 2 select index equivalence classes, 0 disjoint index pairs (out of 1 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 28 treesize of output 17 [2018-11-23 01:22:22,611 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:22,615 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:22,621 INFO L267 ElimStorePlain]: Start of recursive call 1: 4 dim-0 vars, 1 dim-2 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:22,621 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 5 variables, input treesize:66, output treesize:5 [2018-11-23 01:22:22,634 INFO L134 CoverageAnalysis]: Checked inductivity of 6 backedges. 0 proven. 5 refuted. 0 times theorem prover too weak. 1 trivial. 0 not checked. [2018-11-23 01:22:22,648 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 01:22:22,648 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [14, 14] total 23 [2018-11-23 01:22:22,649 INFO L459 AbstractCegarLoop]: Interpolant automaton has 23 states [2018-11-23 01:22:22,649 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 23 interpolants. [2018-11-23 01:22:22,649 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=62, Invalid=444, Unknown=0, NotChecked=0, Total=506 [2018-11-23 01:22:22,649 INFO L87 Difference]: Start difference. First operand 41 states and 45 transitions. Second operand 23 states. [2018-11-23 01:22:23,225 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:23,225 INFO L93 Difference]: Finished difference Result 62 states and 68 transitions. [2018-11-23 01:22:23,225 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 17 states. [2018-11-23 01:22:23,225 INFO L78 Accepts]: Start accepts. Automaton has 23 states. Word has length 33 [2018-11-23 01:22:23,226 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:23,226 INFO L225 Difference]: With dead ends: 62 [2018-11-23 01:22:23,226 INFO L226 Difference]: Without dead ends: 54 [2018-11-23 01:22:23,227 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 63 GetRequests, 21 SyntacticMatches, 7 SemanticMatches, 35 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 236 ImplicationChecksByTransitivity, 0.9s TimeCoverageRelationStatistics Valid=210, Invalid=1122, Unknown=0, NotChecked=0, Total=1332 [2018-11-23 01:22:23,227 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 54 states. [2018-11-23 01:22:23,235 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 54 to 39. [2018-11-23 01:22:23,235 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 39 states. [2018-11-23 01:22:23,236 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 39 states to 39 states and 43 transitions. [2018-11-23 01:22:23,236 INFO L78 Accepts]: Start accepts. Automaton has 39 states and 43 transitions. Word has length 33 [2018-11-23 01:22:23,236 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:23,236 INFO L480 AbstractCegarLoop]: Abstraction has 39 states and 43 transitions. [2018-11-23 01:22:23,236 INFO L481 AbstractCegarLoop]: Interpolant automaton has 23 states. [2018-11-23 01:22:23,237 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 43 transitions. [2018-11-23 01:22:23,237 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 38 [2018-11-23 01:22:23,237 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:23,239 INFO L402 BasicCegarLoop]: trace histogram [4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:23,239 INFO L423 AbstractCegarLoop]: === Iteration 7 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:23,239 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:23,240 INFO L82 PathProgramCache]: Analyzing trace with hash 1263240701, now seen corresponding path program 2 times [2018-11-23 01:22:23,240 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:23,240 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:23,240 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:23,240 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 01:22:23,240 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:23,272 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:23,589 WARN L180 SmtUtils]: Spent 124.00 ms on a formula simplification. DAG size of input: 149 DAG size of output: 34 [2018-11-23 01:22:23,950 INFO L134 CoverageAnalysis]: Checked inductivity of 16 backedges. 0 proven. 12 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:23,950 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 01:22:23,950 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/z3 Starting monitored process 5 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 5 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 01:22:23,955 INFO L103 rtionOrderModulation]: Keeping assertion order OUTSIDE_LOOP_FIRST1 [2018-11-23 01:22:23,981 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 01:22:23,981 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 01:22:23,983 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 01:22:24,059 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 1 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 16 treesize of output 13 [2018-11-23 01:22:24,060 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 1 stores, 0 select indices, 0 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 13 treesize of output 12 [2018-11-23 01:22:24,061 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:24,062 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:24,067 INFO L267 ElimStorePlain]: Start of recursive call 1: 1 dim-0 vars, 1 dim-2 vars, End of recursive call: 1 dim-0 vars, and 1 xjuncts. [2018-11-23 01:22:24,067 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 2 variables, input treesize:42, output treesize:38 [2018-11-23 01:22:24,181 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 39 treesize of output 33 [2018-11-23 01:22:24,183 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 33 treesize of output 9 [2018-11-23 01:22:24,184 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:24,187 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:24,191 INFO L267 ElimStorePlain]: Start of recursive call 1: 2 dim-0 vars, 1 dim-2 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:24,191 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 3 variables, input treesize:42, output treesize:9 [2018-11-23 01:22:24,230 INFO L134 CoverageAnalysis]: Checked inductivity of 16 backedges. 3 proven. 12 refuted. 0 times theorem prover too weak. 1 trivial. 0 not checked. [2018-11-23 01:22:24,245 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 01:22:24,245 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [17, 12] total 26 [2018-11-23 01:22:24,245 INFO L459 AbstractCegarLoop]: Interpolant automaton has 26 states [2018-11-23 01:22:24,246 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 26 interpolants. [2018-11-23 01:22:24,246 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=93, Invalid=557, Unknown=0, NotChecked=0, Total=650 [2018-11-23 01:22:24,246 INFO L87 Difference]: Start difference. First operand 39 states and 43 transitions. Second operand 26 states. [2018-11-23 01:22:25,029 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:25,029 INFO L93 Difference]: Finished difference Result 72 states and 80 transitions. [2018-11-23 01:22:25,030 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 24 states. [2018-11-23 01:22:25,030 INFO L78 Accepts]: Start accepts. Automaton has 26 states. Word has length 37 [2018-11-23 01:22:25,031 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:25,031 INFO L225 Difference]: With dead ends: 72 [2018-11-23 01:22:25,031 INFO L226 Difference]: Without dead ends: 64 [2018-11-23 01:22:25,032 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 78 GetRequests, 29 SyntacticMatches, 4 SemanticMatches, 45 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 409 ImplicationChecksByTransitivity, 1.4s TimeCoverageRelationStatistics Valid=410, Invalid=1752, Unknown=0, NotChecked=0, Total=2162 [2018-11-23 01:22:25,032 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 64 states. [2018-11-23 01:22:25,042 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 64 to 49. [2018-11-23 01:22:25,043 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 49 states. [2018-11-23 01:22:25,043 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 49 states to 49 states and 53 transitions. [2018-11-23 01:22:25,043 INFO L78 Accepts]: Start accepts. Automaton has 49 states and 53 transitions. Word has length 37 [2018-11-23 01:22:25,043 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:25,044 INFO L480 AbstractCegarLoop]: Abstraction has 49 states and 53 transitions. [2018-11-23 01:22:25,044 INFO L481 AbstractCegarLoop]: Interpolant automaton has 26 states. [2018-11-23 01:22:25,044 INFO L276 IsEmpty]: Start isEmpty. Operand 49 states and 53 transitions. [2018-11-23 01:22:25,046 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 38 [2018-11-23 01:22:25,046 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:25,046 INFO L402 BasicCegarLoop]: trace histogram [4, 3, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:25,047 INFO L423 AbstractCegarLoop]: === Iteration 8 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:25,047 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:25,047 INFO L82 PathProgramCache]: Analyzing trace with hash -685796735, now seen corresponding path program 2 times [2018-11-23 01:22:25,047 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:25,047 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:25,048 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:25,048 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 01:22:25,048 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:25,070 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:25,398 WARN L180 SmtUtils]: Spent 101.00 ms on a formula simplification. DAG size of input: 140 DAG size of output: 65 [2018-11-23 01:22:25,765 INFO L134 CoverageAnalysis]: Checked inductivity of 16 backedges. 0 proven. 12 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:25,765 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 01:22:25,765 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/z3 Starting monitored process 6 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 6 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 01:22:25,771 INFO L103 rtionOrderModulation]: Keeping assertion order OUTSIDE_LOOP_FIRST1 [2018-11-23 01:22:25,793 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 01:22:25,793 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 01:22:25,795 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 01:22:25,863 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 1 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 11 treesize of output 8 [2018-11-23 01:22:25,865 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 1 stores, 0 select indices, 0 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 8 treesize of output 7 [2018-11-23 01:22:25,865 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:25,867 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:25,871 INFO L267 ElimStorePlain]: Start of recursive call 1: 1 dim-0 vars, 1 dim-2 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:25,872 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 2 variables, input treesize:37, output treesize:34 [2018-11-23 01:22:25,952 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 41 treesize of output 33 [2018-11-23 01:22:25,956 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 33 treesize of output 25 [2018-11-23 01:22:25,957 INFO L267 ElimStorePlain]: Start of recursive call 3: 1 dim-0 vars, End of recursive call: 1 dim-0 vars, and 1 xjuncts. [2018-11-23 01:22:25,961 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: 1 dim-0 vars, and 1 xjuncts. [2018-11-23 01:22:25,966 INFO L267 ElimStorePlain]: Start of recursive call 1: 2 dim-0 vars, 1 dim-2 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:25,966 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 3 variables, input treesize:41, output treesize:5 [2018-11-23 01:22:25,983 INFO L134 CoverageAnalysis]: Checked inductivity of 16 backedges. 3 proven. 12 refuted. 0 times theorem prover too weak. 1 trivial. 0 not checked. [2018-11-23 01:22:25,998 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 01:22:25,998 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [17, 12] total 26 [2018-11-23 01:22:25,998 INFO L459 AbstractCegarLoop]: Interpolant automaton has 26 states [2018-11-23 01:22:25,998 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 26 interpolants. [2018-11-23 01:22:25,998 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=71, Invalid=579, Unknown=0, NotChecked=0, Total=650 [2018-11-23 01:22:25,998 INFO L87 Difference]: Start difference. First operand 49 states and 53 transitions. Second operand 26 states. [2018-11-23 01:22:26,604 WARN L180 SmtUtils]: Spent 116.00 ms on a formula simplification. DAG size of input: 126 DAG size of output: 54 [2018-11-23 01:22:26,724 WARN L180 SmtUtils]: Spent 100.00 ms on a formula simplification. DAG size of input: 133 DAG size of output: 87 [2018-11-23 01:22:26,894 WARN L180 SmtUtils]: Spent 141.00 ms on a formula simplification. DAG size of input: 138 DAG size of output: 56 [2018-11-23 01:22:27,812 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:27,812 INFO L93 Difference]: Finished difference Result 101 states and 110 transitions. [2018-11-23 01:22:27,812 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 40 states. [2018-11-23 01:22:27,812 INFO L78 Accepts]: Start accepts. Automaton has 26 states. Word has length 37 [2018-11-23 01:22:27,812 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:27,813 INFO L225 Difference]: With dead ends: 101 [2018-11-23 01:22:27,813 INFO L226 Difference]: Without dead ends: 93 [2018-11-23 01:22:27,814 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 95 GetRequests, 29 SyntacticMatches, 5 SemanticMatches, 61 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 857 ImplicationChecksByTransitivity, 2.3s TimeCoverageRelationStatistics Valid=740, Invalid=3166, Unknown=0, NotChecked=0, Total=3906 [2018-11-23 01:22:27,814 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 93 states. [2018-11-23 01:22:27,823 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 93 to 47. [2018-11-23 01:22:27,823 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 47 states. [2018-11-23 01:22:27,823 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 47 states to 47 states and 51 transitions. [2018-11-23 01:22:27,823 INFO L78 Accepts]: Start accepts. Automaton has 47 states and 51 transitions. Word has length 37 [2018-11-23 01:22:27,824 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:27,824 INFO L480 AbstractCegarLoop]: Abstraction has 47 states and 51 transitions. [2018-11-23 01:22:27,824 INFO L481 AbstractCegarLoop]: Interpolant automaton has 26 states. [2018-11-23 01:22:27,824 INFO L276 IsEmpty]: Start isEmpty. Operand 47 states and 51 transitions. [2018-11-23 01:22:27,824 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 46 [2018-11-23 01:22:27,824 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:27,824 INFO L402 BasicCegarLoop]: trace histogram [8, 7, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:27,825 INFO L423 AbstractCegarLoop]: === Iteration 9 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:27,825 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:27,825 INFO L82 PathProgramCache]: Analyzing trace with hash 2133408361, now seen corresponding path program 3 times [2018-11-23 01:22:27,825 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:27,825 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:27,826 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:27,826 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 01:22:27,826 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:27,868 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 01:22:28,512 WARN L180 SmtUtils]: Spent 143.00 ms on a formula simplification. DAG size of input: 250 DAG size of output: 26 [2018-11-23 01:22:29,395 INFO L134 CoverageAnalysis]: Checked inductivity of 60 backedges. 0 proven. 56 refuted. 0 times theorem prover too weak. 4 trivial. 0 not checked. [2018-11-23 01:22:29,395 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 01:22:29,396 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/z3 Starting monitored process 7 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 7 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 01:22:29,402 INFO L103 rtionOrderModulation]: Keeping assertion order OUTSIDE_LOOP_FIRST2 [2018-11-23 01:22:29,448 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST2 issued 8 check-sat command(s) [2018-11-23 01:22:29,448 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 01:22:29,451 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 01:22:29,513 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 1 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 15 treesize of output 12 [2018-11-23 01:22:29,515 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 1 stores, 0 select indices, 0 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 12 treesize of output 11 [2018-11-23 01:22:29,515 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:29,516 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:29,519 INFO L267 ElimStorePlain]: Start of recursive call 1: 1 dim-0 vars, 1 dim-2 vars, End of recursive call: 1 dim-0 vars, and 1 xjuncts. [2018-11-23 01:22:29,520 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 2 variables, input treesize:36, output treesize:32 [2018-11-23 01:22:29,737 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 2, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 1 new quantified variables, introduced 0 case distinctions, treesize of input 36 treesize of output 30 [2018-11-23 01:22:29,739 INFO L478 Elim1Store]: Elim1 did not use preprocessing eliminated variable of array dimension 1, 0 stores, 1 select indices, 1 select index equivalence classes, 0 disjoint index pairs (out of 0 index pairs), introduced 0 new quantified variables, introduced 0 case distinctions, treesize of input 30 treesize of output 9 [2018-11-23 01:22:29,739 INFO L267 ElimStorePlain]: Start of recursive call 3: End of recursive call: and 1 xjuncts. [2018-11-23 01:22:29,741 INFO L267 ElimStorePlain]: Start of recursive call 2: 1 dim-1 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:29,744 INFO L267 ElimStorePlain]: Start of recursive call 1: 2 dim-0 vars, 1 dim-2 vars, End of recursive call: and 1 xjuncts. [2018-11-23 01:22:29,744 INFO L202 ElimStorePlain]: Needed 3 recursive calls to eliminate 3 variables, input treesize:36, output treesize:5 [2018-11-23 01:22:29,762 INFO L134 CoverageAnalysis]: Checked inductivity of 60 backedges. 3 proven. 56 refuted. 0 times theorem prover too weak. 1 trivial. 0 not checked. [2018-11-23 01:22:29,779 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 01:22:29,779 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [21, 16] total 34 [2018-11-23 01:22:29,779 INFO L459 AbstractCegarLoop]: Interpolant automaton has 34 states [2018-11-23 01:22:29,780 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 34 interpolants. [2018-11-23 01:22:29,780 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=160, Invalid=962, Unknown=0, NotChecked=0, Total=1122 [2018-11-23 01:22:29,780 INFO L87 Difference]: Start difference. First operand 47 states and 51 transitions. Second operand 34 states. [2018-11-23 01:22:31,747 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 01:22:31,747 INFO L93 Difference]: Finished difference Result 96 states and 108 transitions. [2018-11-23 01:22:31,747 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 59 states. [2018-11-23 01:22:31,747 INFO L78 Accepts]: Start accepts. Automaton has 34 states. Word has length 45 [2018-11-23 01:22:31,748 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 01:22:31,748 INFO L225 Difference]: With dead ends: 96 [2018-11-23 01:22:31,748 INFO L226 Difference]: Without dead ends: 88 [2018-11-23 01:22:31,749 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 126 GetRequests, 33 SyntacticMatches, 5 SemanticMatches, 88 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 2127 ImplicationChecksByTransitivity, 3.2s TimeCoverageRelationStatistics Valid=1584, Invalid=6426, Unknown=0, NotChecked=0, Total=8010 [2018-11-23 01:22:31,750 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 88 states. [2018-11-23 01:22:31,761 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 88 to 55. [2018-11-23 01:22:31,761 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 55 states. [2018-11-23 01:22:31,762 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 55 states to 55 states and 59 transitions. [2018-11-23 01:22:31,762 INFO L78 Accepts]: Start accepts. Automaton has 55 states and 59 transitions. Word has length 45 [2018-11-23 01:22:31,762 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 01:22:31,762 INFO L480 AbstractCegarLoop]: Abstraction has 55 states and 59 transitions. [2018-11-23 01:22:31,762 INFO L481 AbstractCegarLoop]: Interpolant automaton has 34 states. [2018-11-23 01:22:31,762 INFO L276 IsEmpty]: Start isEmpty. Operand 55 states and 59 transitions. [2018-11-23 01:22:31,763 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 54 [2018-11-23 01:22:31,763 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 01:22:31,763 INFO L402 BasicCegarLoop]: trace histogram [12, 11, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 01:22:31,763 INFO L423 AbstractCegarLoop]: === Iteration 10 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 01:22:31,763 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 01:22:31,763 INFO L82 PathProgramCache]: Analyzing trace with hash 821150421, now seen corresponding path program 4 times [2018-11-23 01:22:31,764 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 01:22:31,764 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 01:22:31,764 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:31,764 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 01:22:31,764 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 01:22:31,775 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 01:22:31,784 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 01:22:31,800 INFO L469 BasicCegarLoop]: Counterexample might be feasible ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=77, |#NULL.offset|=73, |old(#NULL.base)|=77, |old(#NULL.offset)|=73, |old(~#d1~0.base)|=74, |old(~#d1~0.offset)|=80, |old(~#d2~0.base)|=76, |old(~#d2~0.offset)|=78, |~#d1~0.base|=74, |~#d1~0.offset|=80, |~#d2~0.base|=76, |~#d2~0.offset|=78] [?] #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0];call ~#d1~0.base, ~#d1~0.offset := #Ultimate.alloc(72);call write~init~int(0, ~#d1~0.base, ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 4 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 8 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 12 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 16 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 20 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 24 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 28 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 32 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 36 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 40 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 44 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 48 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 52 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 56 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 60 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 64 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 68 + ~#d1~0.offset, 4);call ~#d2~0.base, ~#d2~0.offset := #Ultimate.alloc(72);call write~init~int(0, ~#d2~0.base, ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 4 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 8 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 12 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 16 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 20 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 24 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 28 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 32 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 36 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 40 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 44 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 48 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 52 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 56 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 60 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 64 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 68 + ~#d2~0.offset, 4); VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=77, |old(#NULL.offset)|=73, |old(~#d1~0.base)|=74, |old(~#d1~0.offset)|=80, |old(~#d2~0.base)|=76, |old(~#d2~0.offset)|=78, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=77, |old(#NULL.offset)|=73, |old(~#d1~0.base)|=74, |old(~#d1~0.offset)|=80, |old(~#d2~0.base)|=76, |old(~#d2~0.offset)|=78, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #53#return; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret14 := main(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call init(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647;call write~int(#t~nondet0, ~#d1~0.base, ~#d1~0.offset, 4);havoc #t~nondet0;assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647;call write~int(#t~nondet1, ~#d1~0.base, 4 + ~#d1~0.offset, 4);havoc #t~nondet1;assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647;call write~int(#t~nondet2, ~#d2~0.base, ~#d2~0.offset, 4);havoc #t~nondet2;assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647;call write~int(#t~nondet3, ~#d2~0.base, 4 + ~#d2~0.offset, 4);havoc #t~nondet3; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #57#return; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume 0 != #t~nondet4 % 256;#t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#t~ite5.base|=75, |get_dummy_#t~ite5.offset|=0, |get_dummy_#t~nondet4|=1, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset;havoc #t~nondet4;havoc #t~ite5.base, #t~ite5.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #59#return; VAL [|#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret7.base|=75, |main_#t~ret7.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] ~pd1~0.base, ~pd1~0.offset := #t~ret7.base, #t~ret7.offset;havoc #t~ret7.base, #t~ret7.offset; VAL [main_~pd1~0.base=75, main_~pd1~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume 0 != #t~nondet4 % 256;#t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#t~ite5.base|=75, |get_dummy_#t~ite5.offset|=0, |get_dummy_#t~nondet4|=1, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset;havoc #t~nondet4;havoc #t~ite5.base, #t~ite5.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #61#return; VAL [main_~pd1~0.base=75, main_~pd1~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret8.base|=75, |main_#t~ret8.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] ~pd2~0.base, ~pd2~0.offset := #t~ret8.base, #t~ret8.offset;havoc #t~ret8.base, #t~ret8.offset;assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647;~i~0 := #t~nondet9;havoc #t~nondet9; VAL [main_~i~0=0, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume (((~pd1~0.base != 0 || ~pd1~0.offset != 0) && ~pd1~0.base == ~pd2~0.base && ~pd1~0.offset == ~pd2~0.offset) && ~i~0 >= 0) && ~i~0 < 10;call write~int(~i~0, ~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4);~pa~0.base, ~pa~0.offset := ~pd1~0.base, 8 + ~pd1~0.offset + 4 * ~i~0;call #t~mem10 := read~int(~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4);~i~0 := #t~mem10 - 10;havoc #t~mem10; VAL [main_~i~0=(- 10), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 10), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 9), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 9), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 8), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 8), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 7), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 7), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 6), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 6), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 5), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 5), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 4), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 4), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 3), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 3), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 2), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 2), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 1), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 1), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=0, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=0, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !(~i~0 <= #t~mem11);havoc #t~mem11; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [|#NULL.base|=0, |#NULL.offset|=0, |check_#in~i|=1, |check_#in~s1.base|=75, |check_#in~s1.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] ~s1.base, ~s1.offset := #in~s1.base, #in~s1.offset;~i := #in~i;call #t~mem6 := read~int(~s1.base, 8 + ~s1.offset + 4 * ~i, 4);#res := (if #t~mem6 == ~i then 1 else 0);havoc #t~mem6; VAL [check_~i=1, check_~s1.base=75, check_~s1.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |check_#in~i|=1, |check_#in~s1.base|=75, |check_#in~s1.offset|=0, |check_#res|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [check_~i=1, check_~s1.base=75, check_~s1.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |check_#in~i|=1, |check_#in~s1.base|=75, |check_#in~s1.offset|=0, |check_#res|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #63#return; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret13|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret13|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume 0 == #t~ret13;havoc #t~ret13; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !false; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=77, #NULL.offset=73, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=74, ~#d1~0.offset=80, ~#d2~0.base=76, ~#d2~0.offset=78] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; [L10] call ~#d1~0.base, ~#d1~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d1~0.base, ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 8 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 12 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 16 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 20 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 24 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 28 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 32 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 36 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 40 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 44 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 48 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 52 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 56 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 60 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 64 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 68 + ~#d1~0.offset, 4); [L10] call ~#d2~0.base, ~#d2~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d2~0.base, ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 8 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 12 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 16 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 20 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 24 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 28 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 32 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 36 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 40 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 44 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 48 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 52 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 56 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 60 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 64 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 68 + ~#d2~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] CALL call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] call write~int(#t~nondet0, ~#d1~0.base, ~#d1~0.offset, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] call write~int(#t~nondet1, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] call write~int(#t~nondet2, ~#d2~0.base, ~#d2~0.offset, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] call write~int(#t~nondet3, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L18] havoc #t~nondet3; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L12-L19] ensures true; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] RET call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] CALL call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret7.base=75, #t~ret7.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] ~pd1~0.base, ~pd1~0.offset := #t~ret7.base, #t~ret7.offset; [L34] havoc #t~ret7.base, #t~ret7.offset; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] CALL call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret8.base=75, #t~ret8.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] ~pd2~0.base, ~pd2~0.offset := #t~ret8.base, #t~ret8.offset; [L34] havoc #t~ret8.base, #t~ret8.offset; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L36-L46] assume (((~pd1~0.base != 0 || ~pd1~0.offset != 0) && ~pd1~0.base == ~pd2~0.base && ~pd1~0.offset == ~pd2~0.offset) && ~i~0 >= 0) && ~i~0 < 10; [L37] call write~int(~i~0, ~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L38] ~pa~0.base, ~pa~0.offset := ~pd1~0.base, 8 + ~pd1~0.offset + 4 * ~i~0; [L39] call #t~mem10 := read~int(~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !(~i~0 <= #t~mem11); [L40] havoc #t~mem11; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] CALL call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L26-L29] ~s1.base, ~s1.offset := #in~s1.base, #in~s1.offset; [L26-L29] ~i := #in~i; [L28] call #t~mem6 := read~int(~s1.base, 8 + ~s1.offset + 4 * ~i, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L26-L29] ensures true; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L43] RET call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43-L45] assume 0 == #t~ret13; [L43] havoc #t~ret13; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L50] assert false; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=77, #NULL.offset=73, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=74, ~#d1~0.offset=80, ~#d2~0.base=76, ~#d2~0.offset=78] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; [L10] call ~#d1~0.base, ~#d1~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d1~0.base, ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 8 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 12 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 16 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 20 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 24 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 28 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 32 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 36 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 40 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 44 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 48 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 52 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 56 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 60 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 64 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 68 + ~#d1~0.offset, 4); [L10] call ~#d2~0.base, ~#d2~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d2~0.base, ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 8 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 12 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 16 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 20 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 24 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 28 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 32 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 36 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 40 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 44 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 48 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 52 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 56 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 60 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 64 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 68 + ~#d2~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] CALL call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] call write~int(#t~nondet0, ~#d1~0.base, ~#d1~0.offset, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] call write~int(#t~nondet1, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] call write~int(#t~nondet2, ~#d2~0.base, ~#d2~0.offset, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] call write~int(#t~nondet3, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L18] havoc #t~nondet3; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L12-L19] ensures true; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] RET call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] CALL call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret7.base=75, #t~ret7.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] ~pd1~0.base, ~pd1~0.offset := #t~ret7.base, #t~ret7.offset; [L34] havoc #t~ret7.base, #t~ret7.offset; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] CALL call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret8.base=75, #t~ret8.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] ~pd2~0.base, ~pd2~0.offset := #t~ret8.base, #t~ret8.offset; [L34] havoc #t~ret8.base, #t~ret8.offset; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L36-L46] assume (((~pd1~0.base != 0 || ~pd1~0.offset != 0) && ~pd1~0.base == ~pd2~0.base && ~pd1~0.offset == ~pd2~0.offset) && ~i~0 >= 0) && ~i~0 < 10; [L37] call write~int(~i~0, ~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L38] ~pa~0.base, ~pa~0.offset := ~pd1~0.base, 8 + ~pd1~0.offset + 4 * ~i~0; [L39] call #t~mem10 := read~int(~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !(~i~0 <= #t~mem11); [L40] havoc #t~mem11; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] CALL call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L26-L29] ~s1.base, ~s1.offset := #in~s1.base, #in~s1.offset; [L26-L29] ~i := #in~i; [L28] call #t~mem6 := read~int(~s1.base, 8 + ~s1.offset + 4 * ~i, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L26-L29] ensures true; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L43] RET call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43-L45] assume 0 == #t~ret13; [L43] havoc #t~ret13; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L50] assert false; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L10] struct dummy d1, d2; VAL [\old(d1)=74, \old(d1)=80, \old(d2)=78, \old(d2)=76, d1={75:0}, d2={79:0}] [L33] CALL init() VAL [d1={75:0}, d2={79:0}] [L14] d1.a = __VERIFIER_nondet_int() [L15] d1.b = __VERIFIER_nondet_int() [L17] d2.a = __VERIFIER_nondet_int() [L18] d2.b = __VERIFIER_nondet_int() [L33] RET init() VAL [d1={75:0}, d2={79:0}] [L34] CALL, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}] [L23] EXPR __VERIFIER_nondet_bool() ? &d1 : &d2 VAL [__VERIFIER_nondet_bool()=1, __VERIFIER_nondet_bool() ? &d1 : &d2={75:0}, d1={75:0}, d2={79:0}] [L23] return (__VERIFIER_nondet_bool() ? &d1 : &d2); [L34] RET, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}, get_dummy()={75:0}] [L34] struct dummy *pd1 = get_dummy(), *pd2 = get_dummy(); [L34] CALL, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}] [L23] EXPR __VERIFIER_nondet_bool() ? &d1 : &d2 VAL [__VERIFIER_nondet_bool()=1, __VERIFIER_nondet_bool() ? &d1 : &d2={75:0}, d1={75:0}, d2={79:0}] [L23] return (__VERIFIER_nondet_bool() ? &d1 : &d2); [L34] RET, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}, get_dummy()={75:0}, pd1={75:0}] [L34] struct dummy *pd1 = get_dummy(), *pd2 = get_dummy(); [L35] int i = __VERIFIER_nondet_int(); [L36] COND TRUE pd1 != 0 && pd1 == pd2 && i >= 0 && i < 10 [L37] pd2->array[i] = i [L38] int *pa = &pd1->array[i]; [L39] EXPR pd2->array[i] [L39] i = pd2->array[i] - 10 [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-10, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-9, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-9, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-8, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-8, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-7, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-7, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-6, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-6, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-5, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-5, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-4, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-4, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-3, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-3, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-2, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-2, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=0, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=0, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND FALSE !(i <= *pa) [L43] CALL, EXPR check(pd2, i) VAL [\old(i)=1, d1={75:0}, d2={79:0}, s1={75:0}] [L28] EXPR s1->array[i] [L28] return s1->array[i] == i; [L43] RET, EXPR check(pd2, i) VAL [check(pd2, i)=0, d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L43] COND TRUE !check(pd2, i) [L50] __VERIFIER_error() VAL [d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] ----- [2018-11-23 01:22:31,982 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction CFG 23.11 01:22:31 BoogieIcfgContainer [2018-11-23 01:22:31,982 INFO L132 PluginConnector]: ------------------------ END TraceAbstraction---------------------------- [2018-11-23 01:22:31,983 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 01:22:31,983 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 01:22:31,983 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 01:22:31,983 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:22:17" (3/4) ... [2018-11-23 01:22:31,985 INFO L138 WitnessPrinter]: Generating witness for reachability counterexample ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=77, |#NULL.offset|=73, |old(#NULL.base)|=77, |old(#NULL.offset)|=73, |old(~#d1~0.base)|=74, |old(~#d1~0.offset)|=80, |old(~#d2~0.base)|=76, |old(~#d2~0.offset)|=78, |~#d1~0.base|=74, |~#d1~0.offset|=80, |~#d2~0.base|=76, |~#d2~0.offset|=78] [?] #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0];call ~#d1~0.base, ~#d1~0.offset := #Ultimate.alloc(72);call write~init~int(0, ~#d1~0.base, ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 4 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 8 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 12 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 16 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 20 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 24 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 28 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 32 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 36 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 40 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 44 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 48 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 52 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 56 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 60 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 64 + ~#d1~0.offset, 4);call write~init~int(0, ~#d1~0.base, 68 + ~#d1~0.offset, 4);call ~#d2~0.base, ~#d2~0.offset := #Ultimate.alloc(72);call write~init~int(0, ~#d2~0.base, ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 4 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 8 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 12 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 16 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 20 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 24 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 28 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 32 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 36 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 40 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 44 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 48 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 52 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 56 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 60 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 64 + ~#d2~0.offset, 4);call write~init~int(0, ~#d2~0.base, 68 + ~#d2~0.offset, 4); VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=77, |old(#NULL.offset)|=73, |old(~#d1~0.base)|=74, |old(~#d1~0.offset)|=80, |old(~#d2~0.base)|=76, |old(~#d2~0.offset)|=78, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=77, |old(#NULL.offset)|=73, |old(~#d1~0.base)|=74, |old(~#d1~0.offset)|=80, |old(~#d2~0.base)|=76, |old(~#d2~0.offset)|=78, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #53#return; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret14 := main(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call init(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647;call write~int(#t~nondet0, ~#d1~0.base, ~#d1~0.offset, 4);havoc #t~nondet0;assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647;call write~int(#t~nondet1, ~#d1~0.base, 4 + ~#d1~0.offset, 4);havoc #t~nondet1;assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647;call write~int(#t~nondet2, ~#d2~0.base, ~#d2~0.offset, 4);havoc #t~nondet2;assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647;call write~int(#t~nondet3, ~#d2~0.base, 4 + ~#d2~0.offset, 4);havoc #t~nondet3; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #57#return; VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume 0 != #t~nondet4 % 256;#t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#t~ite5.base|=75, |get_dummy_#t~ite5.offset|=0, |get_dummy_#t~nondet4|=1, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset;havoc #t~nondet4;havoc #t~ite5.base, #t~ite5.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #59#return; VAL [|#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret7.base|=75, |main_#t~ret7.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] ~pd1~0.base, ~pd1~0.offset := #t~ret7.base, #t~ret7.offset;havoc #t~ret7.base, #t~ret7.offset; VAL [main_~pd1~0.base=75, main_~pd1~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [|#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume 0 != #t~nondet4 % 256;#t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#t~ite5.base|=75, |get_dummy_#t~ite5.offset|=0, |get_dummy_#t~nondet4|=1, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset;havoc #t~nondet4;havoc #t~ite5.base, #t~ite5.offset; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |get_dummy_#res.base|=75, |get_dummy_#res.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #61#return; VAL [main_~pd1~0.base=75, main_~pd1~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret8.base|=75, |main_#t~ret8.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] ~pd2~0.base, ~pd2~0.offset := #t~ret8.base, #t~ret8.offset;havoc #t~ret8.base, #t~ret8.offset;assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647;~i~0 := #t~nondet9;havoc #t~nondet9; VAL [main_~i~0=0, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume (((~pd1~0.base != 0 || ~pd1~0.offset != 0) && ~pd1~0.base == ~pd2~0.base && ~pd1~0.offset == ~pd2~0.offset) && ~i~0 >= 0) && ~i~0 < 10;call write~int(~i~0, ~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4);~pa~0.base, ~pa~0.offset := ~pd1~0.base, 8 + ~pd1~0.offset + 4 * ~i~0;call #t~mem10 := read~int(~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4);~i~0 := #t~mem10 - 10;havoc #t~mem10; VAL [main_~i~0=(- 10), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 10), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 9), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 9), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 8), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 8), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 7), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 7), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 6), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 6), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 5), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 5), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 4), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 4), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 3), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 3), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 2), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 2), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=(- 1), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=(- 1), main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=0, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=0, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !!(~i~0 <= #t~mem11);havoc #t~mem11;#t~pre12 := 1 + ~i~0;~i~0 := 1 + ~i~0;havoc #t~pre12; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~mem11|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !(~i~0 <= #t~mem11);havoc #t~mem11; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [|#NULL.base|=0, |#NULL.offset|=0, |check_#in~i|=1, |check_#in~s1.base|=75, |check_#in~s1.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] ~s1.base, ~s1.offset := #in~s1.base, #in~s1.offset;~i := #in~i;call #t~mem6 := read~int(~s1.base, 8 + ~s1.offset + 4 * ~i, 4);#res := (if #t~mem6 == ~i then 1 else 0);havoc #t~mem6; VAL [check_~i=1, check_~s1.base=75, check_~s1.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |check_#in~i|=1, |check_#in~s1.base|=75, |check_#in~s1.offset|=0, |check_#res|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume true; VAL [check_~i=1, check_~s1.base=75, check_~s1.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |check_#in~i|=1, |check_#in~s1.base|=75, |check_#in~s1.offset|=0, |check_#res|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] RET #63#return; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret13|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |main_#t~ret13|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume 0 == #t~ret13;havoc #t~ret13; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] assume !false; VAL [main_~i~0=1, main_~pa~0.base=75, main_~pa~0.offset=8, main_~pd1~0.base=75, main_~pd1~0.offset=0, main_~pd2~0.base=75, main_~pd2~0.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |~#d1~0.base|=75, |~#d1~0.offset|=0, |~#d2~0.base|=79, |~#d2~0.offset|=0] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=77, #NULL.offset=73, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=74, ~#d1~0.offset=80, ~#d2~0.base=76, ~#d2~0.offset=78] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; [L10] call ~#d1~0.base, ~#d1~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d1~0.base, ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 8 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 12 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 16 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 20 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 24 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 28 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 32 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 36 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 40 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 44 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 48 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 52 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 56 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 60 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 64 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 68 + ~#d1~0.offset, 4); [L10] call ~#d2~0.base, ~#d2~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d2~0.base, ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 8 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 12 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 16 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 20 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 24 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 28 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 32 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 36 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 40 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 44 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 48 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 52 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 56 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 60 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 64 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 68 + ~#d2~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] CALL call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] call write~int(#t~nondet0, ~#d1~0.base, ~#d1~0.offset, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] call write~int(#t~nondet1, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] call write~int(#t~nondet2, ~#d2~0.base, ~#d2~0.offset, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] call write~int(#t~nondet3, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L18] havoc #t~nondet3; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L12-L19] ensures true; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] RET call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] CALL call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret7.base=75, #t~ret7.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] ~pd1~0.base, ~pd1~0.offset := #t~ret7.base, #t~ret7.offset; [L34] havoc #t~ret7.base, #t~ret7.offset; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] CALL call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret8.base=75, #t~ret8.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] ~pd2~0.base, ~pd2~0.offset := #t~ret8.base, #t~ret8.offset; [L34] havoc #t~ret8.base, #t~ret8.offset; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L36-L46] assume (((~pd1~0.base != 0 || ~pd1~0.offset != 0) && ~pd1~0.base == ~pd2~0.base && ~pd1~0.offset == ~pd2~0.offset) && ~i~0 >= 0) && ~i~0 < 10; [L37] call write~int(~i~0, ~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L38] ~pa~0.base, ~pa~0.offset := ~pd1~0.base, 8 + ~pd1~0.offset + 4 * ~i~0; [L39] call #t~mem10 := read~int(~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !(~i~0 <= #t~mem11); [L40] havoc #t~mem11; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] CALL call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L26-L29] ~s1.base, ~s1.offset := #in~s1.base, #in~s1.offset; [L26-L29] ~i := #in~i; [L28] call #t~mem6 := read~int(~s1.base, 8 + ~s1.offset + 4 * ~i, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L26-L29] ensures true; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L43] RET call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43-L45] assume 0 == #t~ret13; [L43] havoc #t~ret13; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L50] assert false; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=77, #NULL.offset=73, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=74, ~#d1~0.offset=80, ~#d2~0.base=76, ~#d2~0.offset=78] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; [L10] call ~#d1~0.base, ~#d1~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d1~0.base, ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 8 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 12 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 16 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 20 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 24 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 28 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 32 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 36 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 40 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 44 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 48 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 52 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 56 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 60 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 64 + ~#d1~0.offset, 4); [L10] call write~init~int(0, ~#d1~0.base, 68 + ~#d1~0.offset, 4); [L10] call ~#d2~0.base, ~#d2~0.offset := #Ultimate.alloc(72); [L10] call write~init~int(0, ~#d2~0.base, ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 8 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 12 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 16 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 20 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 24 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 28 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 32 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 36 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 40 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 44 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 48 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 52 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 56 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 60 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 64 + ~#d2~0.offset, 4); [L10] call write~init~int(0, ~#d2~0.base, 68 + ~#d2~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=77, old(#NULL.offset)=73, old(~#d1~0.base)=74, old(~#d1~0.offset)=80, old(~#d2~0.base)=76, old(~#d2~0.offset)=78, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] CALL call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] call write~int(#t~nondet0, ~#d1~0.base, ~#d1~0.offset, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] call write~int(#t~nondet1, ~#d1~0.base, 4 + ~#d1~0.offset, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] call write~int(#t~nondet2, ~#d2~0.base, ~#d2~0.offset, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] call write~int(#t~nondet3, ~#d2~0.base, 4 + ~#d2~0.offset, 4); [L18] havoc #t~nondet3; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L12-L19] ensures true; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L33] RET call init(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] CALL call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret7.base, #t~ret7.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret7.base=75, #t~ret7.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] ~pd1~0.base, ~pd1~0.offset := #t~ret7.base, #t~ret7.offset; [L34] havoc #t~ret7.base, #t~ret7.offset; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] CALL call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] assume 0 != #t~nondet4 % 256; [L23] #t~ite5.base, #t~ite5.offset := ~#d1~0.base, ~#d1~0.offset; VAL [#NULL.base=0, #NULL.offset=0, #t~ite5.base=75, #t~ite5.offset=0, #t~nondet4=1, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L23] #res.base, #res.offset := #t~ite5.base, #t~ite5.offset; [L23] havoc #t~nondet4; [L23] havoc #t~ite5.base, #t~ite5.offset; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L21-L24] ensures true; VAL [#NULL.base=0, #NULL.offset=0, #res.base=75, #res.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L34] RET call #t~ret8.base, #t~ret8.offset := get_dummy(); VAL [#NULL.base=0, #NULL.offset=0, #t~ret8.base=75, #t~ret8.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~pd1~0.base=75, ~pd1~0.offset=0] [L34] ~pd2~0.base, ~pd2~0.offset := #t~ret8.base, #t~ret8.offset; [L34] havoc #t~ret8.base, #t~ret8.offset; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L36-L46] assume (((~pd1~0.base != 0 || ~pd1~0.offset != 0) && ~pd1~0.base == ~pd2~0.base && ~pd1~0.offset == ~pd2~0.offset) && ~i~0 >= 0) && ~i~0 < 10; [L37] call write~int(~i~0, ~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L38] ~pa~0.base, ~pa~0.offset := ~pd1~0.base, 8 + ~pd1~0.offset + 4 * ~i~0; [L39] call #t~mem10 := read~int(~pd2~0.base, 8 + ~pd2~0.offset + 4 * ~i~0, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-10, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-9, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-8, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-7, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-6, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-5, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-4, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-3, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-2, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=-1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=0, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !!(~i~0 <= #t~mem11); [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40] call #t~mem11 := read~int(~pa~0.base, ~pa~0.offset, 4); VAL [#NULL.base=0, #NULL.offset=0, #t~mem11=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L40-L42] assume !(~i~0 <= #t~mem11); [L40] havoc #t~mem11; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] CALL call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0] [L26-L29] ~s1.base, ~s1.offset := #in~s1.base, #in~s1.offset; [L26-L29] ~i := #in~i; [L28] call #t~mem6 := read~int(~s1.base, 8 + ~s1.offset + 4 * ~i, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L26-L29] ensures true; VAL [#in~i=1, #in~s1.base=75, #in~s1.offset=0, #NULL.base=0, #NULL.offset=0, #res=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i=1, ~s1.base=75, ~s1.offset=0] [L43] RET call #t~ret13 := check(~pd2~0.base, ~pd2~0.offset, ~i~0); VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL.base=0, #NULL.offset=0, #t~ret13=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L43-L45] assume 0 == #t~ret13; [L43] havoc #t~ret13; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [L50] assert false; VAL [#NULL.base=0, #NULL.offset=0, ~#d1~0.base=75, ~#d1~0.offset=0, ~#d2~0.base=79, ~#d2~0.offset=0, ~i~0=1, ~pa~0.base=75, ~pa~0.offset=8, ~pd1~0.base=75, ~pd1~0.offset=0, ~pd2~0.base=75, ~pd2~0.offset=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=77, #NULL!offset=73, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=74, ~#d1~0!offset=80, ~#d2~0!base=76, ~#d2~0!offset=78] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; [L10] FCALL call ~#d1~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 8 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 12 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 16 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 20 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 24 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 28 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 32 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 36 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 40 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 44 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 48 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 52 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 56 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 60 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 64 + ~#d1~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d1~0!base, offset: 68 + ~#d1~0!offset }, 4); [L10] FCALL call ~#d2~0 := #Ultimate.alloc(72); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 8 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 12 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 16 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 20 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 24 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 28 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 32 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 36 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 40 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 44 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 48 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 52 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 56 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 60 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 64 + ~#d2~0!offset }, 4); [L10] FCALL call write~init~int(0, { base: ~#d2~0!base, offset: 68 + ~#d2~0!offset }, 4); VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=77, old(#NULL!offset)=73, old(~#d1~0!base)=74, old(~#d1~0!offset)=80, old(~#d2~0!base)=76, old(~#d2~0!offset)=78, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [?] CALL call #t~ret14 := main(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] CALL call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L14] assume -2147483648 <= #t~nondet0 && #t~nondet0 <= 2147483647; [L14] FCALL call write~int(#t~nondet0, { base: ~#d1~0!base, offset: ~#d1~0!offset }, 4); [L14] havoc #t~nondet0; [L15] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L15] FCALL call write~int(#t~nondet1, { base: ~#d1~0!base, offset: 4 + ~#d1~0!offset }, 4); [L15] havoc #t~nondet1; [L17] assume -2147483648 <= #t~nondet2 && #t~nondet2 <= 2147483647; [L17] FCALL call write~int(#t~nondet2, { base: ~#d2~0!base, offset: ~#d2~0!offset }, 4); [L17] havoc #t~nondet2; [L18] assume -2147483648 <= #t~nondet3 && #t~nondet3 <= 2147483647; [L18] FCALL call write~int(#t~nondet3, { base: ~#d2~0!base, offset: 4 + ~#d2~0!offset }, 4); [L18] havoc #t~nondet3; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L33] RET call init(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] CALL call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret7 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret7!base=75, #t~ret7!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] ~pd1~0 := #t~ret7; [L34] havoc #t~ret7; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] CALL call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] COND TRUE 0 != #t~nondet4 % 256 [L23] #t~ite5 := ~#d1~0; VAL [#NULL!base=0, #NULL!offset=0, #t~ite5!base=75, #t~ite5!offset=0, #t~nondet4=1, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L23] #res := #t~ite5; [L23] havoc #t~nondet4; [L23] havoc #t~ite5; VAL [#NULL!base=0, #NULL!offset=0, #res!base=75, #res!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L34] RET call #t~ret8 := get_dummy(); VAL [#NULL!base=0, #NULL!offset=0, #t~ret8!base=75, #t~ret8!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~pd1~0!base=75, ~pd1~0!offset=0] [L34] ~pd2~0 := #t~ret8; [L34] havoc #t~ret8; [L35] assume -2147483648 <= #t~nondet9 && #t~nondet9 <= 2147483647; [L35] ~i~0 := #t~nondet9; [L35] havoc #t~nondet9; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L36] COND TRUE ((~pd1~0 != { base: 0, offset: 0 } && ~pd1~0 == ~pd2~0) && ~i~0 >= 0) && ~i~0 < 10 [L37] FCALL call write~int(~i~0, { base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L38] ~pa~0 := { base: ~pd1~0!base, offset: 8 + ~pd1~0!offset + 4 * ~i~0 }; [L39] FCALL call #t~mem10 := read~int({ base: ~pd2~0!base, offset: 8 + ~pd2~0!offset + 4 * ~i~0 }, 4); [L39] ~i~0 := #t~mem10 - 10; [L39] havoc #t~mem10; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-10, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-9, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-8, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-7, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-6, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-5, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-4, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-3, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-2, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=-1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=0, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND FALSE !(!(~i~0 <= #t~mem11)) [L40] havoc #t~mem11; [L41] #t~pre12 := 1 + ~i~0; [L41] ~i~0 := 1 + ~i~0; [L41] havoc #t~pre12; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40] FCALL call #t~mem11 := read~int(~pa~0, 4); VAL [#NULL!base=0, #NULL!offset=0, #t~mem11=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L40-L42] COND TRUE !(~i~0 <= #t~mem11) [L40] havoc #t~mem11; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] CALL call #t~ret13 := check(~pd2~0, ~i~0); VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0] [L26-L29] ~s1 := #in~s1; [L26-L29] ~i := #in~i; [L28] FCALL call #t~mem6 := read~int({ base: ~s1!base, offset: 8 + ~s1!offset + 4 * ~i }, 4); [L28] #res := (if #t~mem6 == ~i then 1 else 0); [L28] havoc #t~mem6; VAL [#in~i=1, #in~s1!base=75, #in~s1!offset=0, #NULL!base=0, #NULL!offset=0, #res=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i=1, ~s1!base=75, ~s1!offset=0] [L43] RET call #t~ret13 := check(~pd2~0, ~i~0); VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] assume -2147483648 <= #t~ret13 && #t~ret13 <= 2147483647; VAL [#NULL!base=0, #NULL!offset=0, #t~ret13=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L43] COND TRUE 0 == #t~ret13 [L43] havoc #t~ret13; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L50] assert false; VAL [#NULL!base=0, #NULL!offset=0, ~#d1~0!base=75, ~#d1~0!offset=0, ~#d2~0!base=79, ~#d2~0!offset=0, ~i~0=1, ~pa~0!base=75, ~pa~0!offset=8, ~pd1~0!base=75, ~pd1~0!offset=0, ~pd2~0!base=75, ~pd2~0!offset=0] [L10] struct dummy d1, d2; VAL [\old(d1)=74, \old(d1)=80, \old(d2)=78, \old(d2)=76, d1={75:0}, d2={79:0}] [L33] CALL init() VAL [d1={75:0}, d2={79:0}] [L14] d1.a = __VERIFIER_nondet_int() [L15] d1.b = __VERIFIER_nondet_int() [L17] d2.a = __VERIFIER_nondet_int() [L18] d2.b = __VERIFIER_nondet_int() [L33] RET init() VAL [d1={75:0}, d2={79:0}] [L34] CALL, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}] [L23] EXPR __VERIFIER_nondet_bool() ? &d1 : &d2 VAL [__VERIFIER_nondet_bool()=1, __VERIFIER_nondet_bool() ? &d1 : &d2={75:0}, d1={75:0}, d2={79:0}] [L23] return (__VERIFIER_nondet_bool() ? &d1 : &d2); [L34] RET, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}, get_dummy()={75:0}] [L34] struct dummy *pd1 = get_dummy(), *pd2 = get_dummy(); [L34] CALL, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}] [L23] EXPR __VERIFIER_nondet_bool() ? &d1 : &d2 VAL [__VERIFIER_nondet_bool()=1, __VERIFIER_nondet_bool() ? &d1 : &d2={75:0}, d1={75:0}, d2={79:0}] [L23] return (__VERIFIER_nondet_bool() ? &d1 : &d2); [L34] RET, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}, get_dummy()={75:0}, pd1={75:0}] [L34] struct dummy *pd1 = get_dummy(), *pd2 = get_dummy(); [L35] int i = __VERIFIER_nondet_int(); [L36] COND TRUE pd1 != 0 && pd1 == pd2 && i >= 0 && i < 10 [L37] pd2->array[i] = i [L38] int *pa = &pd1->array[i]; [L39] EXPR pd2->array[i] [L39] i = pd2->array[i] - 10 [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-10, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-9, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-9, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-8, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-8, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-7, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-7, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-6, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-6, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-5, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-5, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-4, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-4, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-3, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-3, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-2, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-2, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=0, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=0, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND FALSE !(i <= *pa) [L43] CALL, EXPR check(pd2, i) VAL [\old(i)=1, d1={75:0}, d2={79:0}, s1={75:0}] [L28] EXPR s1->array[i] [L28] return s1->array[i] == i; [L43] RET, EXPR check(pd2, i) VAL [check(pd2, i)=0, d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L43] COND TRUE !check(pd2, i) [L50] __VERIFIER_error() VAL [d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] ----- [2018-11-23 01:22:32,494 INFO L145 WitnessManager]: Wrote witness to /tmp/vcloud-vcloud-master/worker/working_dir_62019617-d2fc-47fe-81b8-f2a347129aad/bin-2019/uautomizer/witness.graphml [2018-11-23 01:22:32,494 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 01:22:32,495 INFO L168 Benchmark]: Toolchain (without parser) took 15102.92 ms. Allocated memory was 1.0 GB in the beginning and 1.4 GB in the end (delta: 342.9 MB). Free memory was 960.3 MB in the beginning and 1.2 GB in the end (delta: -247.4 MB). Peak memory consumption was 95.5 MB. Max. memory is 11.5 GB. [2018-11-23 01:22:32,495 INFO L168 Benchmark]: CDTParser took 0.14 ms. Allocated memory is still 1.0 GB. Free memory is still 985.6 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 01:22:32,495 INFO L168 Benchmark]: CACSL2BoogieTranslator took 174.11 ms. Allocated memory is still 1.0 GB. Free memory was 960.3 MB in the beginning and 946.9 MB in the end (delta: 13.4 MB). Peak memory consumption was 13.4 MB. Max. memory is 11.5 GB. [2018-11-23 01:22:32,496 INFO L168 Benchmark]: Boogie Procedure Inliner took 51.17 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 138.4 MB). Free memory was 946.9 MB in the beginning and 1.1 GB in the end (delta: -189.0 MB). Peak memory consumption was 14.4 MB. Max. memory is 11.5 GB. [2018-11-23 01:22:32,496 INFO L168 Benchmark]: Boogie Preprocessor took 23.73 ms. Allocated memory is still 1.2 GB. Free memory is still 1.1 GB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 01:22:32,496 INFO L168 Benchmark]: RCFGBuilder took 183.91 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 19.7 MB). Peak memory consumption was 19.7 MB. Max. memory is 11.5 GB. [2018-11-23 01:22:32,497 INFO L168 Benchmark]: TraceAbstraction took 14154.95 ms. Allocated memory was 1.2 GB in the beginning and 1.4 GB in the end (delta: 204.5 MB). Free memory was 1.1 GB in the beginning and 1.2 GB in the end (delta: -101.3 MB). Peak memory consumption was 103.2 MB. Max. memory is 11.5 GB. [2018-11-23 01:22:32,497 INFO L168 Benchmark]: Witness Printer took 511.46 ms. Allocated memory is still 1.4 GB. Free memory was 1.2 GB in the beginning and 1.2 GB in the end (delta: 9.7 MB). Peak memory consumption was 9.7 MB. Max. memory is 11.5 GB. [2018-11-23 01:22:32,499 INFO L336 ainManager$Toolchain]: ####################### End [Toolchain 1] ####################### --- Results --- * Results from de.uni_freiburg.informatik.ultimate.core: - StatisticsResult: Toolchain Benchmarks Benchmark results are: * CDTParser took 0.14 ms. Allocated memory is still 1.0 GB. Free memory is still 985.6 MB. There was no memory consumed. Max. memory is 11.5 GB. * CACSL2BoogieTranslator took 174.11 ms. Allocated memory is still 1.0 GB. Free memory was 960.3 MB in the beginning and 946.9 MB in the end (delta: 13.4 MB). Peak memory consumption was 13.4 MB. Max. memory is 11.5 GB. * Boogie Procedure Inliner took 51.17 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 138.4 MB). Free memory was 946.9 MB in the beginning and 1.1 GB in the end (delta: -189.0 MB). Peak memory consumption was 14.4 MB. Max. memory is 11.5 GB. * Boogie Preprocessor took 23.73 ms. Allocated memory is still 1.2 GB. Free memory is still 1.1 GB. There was no memory consumed. Max. memory is 11.5 GB. * RCFGBuilder took 183.91 ms. Allocated memory is still 1.2 GB. Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 19.7 MB). Peak memory consumption was 19.7 MB. Max. memory is 11.5 GB. * TraceAbstraction took 14154.95 ms. Allocated memory was 1.2 GB in the beginning and 1.4 GB in the end (delta: 204.5 MB). Free memory was 1.1 GB in the beginning and 1.2 GB in the end (delta: -101.3 MB). Peak memory consumption was 103.2 MB. Max. memory is 11.5 GB. * Witness Printer took 511.46 ms. Allocated memory is still 1.4 GB. Free memory was 1.2 GB in the beginning and 1.2 GB in the end (delta: 9.7 MB). Peak memory consumption was 9.7 MB. Max. memory is 11.5 GB. * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction: - CounterExampleResult [Line: 50]: a call of __VERIFIER_error() is reachable a call of __VERIFIER_error() is reachable We found a FailurePath: [L10] struct dummy d1, d2; VAL [\old(d1)=74, \old(d1)=80, \old(d2)=78, \old(d2)=76, d1={75:0}, d2={79:0}] [L33] CALL init() VAL [d1={75:0}, d2={79:0}] [L14] d1.a = __VERIFIER_nondet_int() [L15] d1.b = __VERIFIER_nondet_int() [L17] d2.a = __VERIFIER_nondet_int() [L18] d2.b = __VERIFIER_nondet_int() [L33] RET init() VAL [d1={75:0}, d2={79:0}] [L34] CALL, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}] [L23] EXPR __VERIFIER_nondet_bool() ? &d1 : &d2 VAL [__VERIFIER_nondet_bool()=1, __VERIFIER_nondet_bool() ? &d1 : &d2={75:0}, d1={75:0}, d2={79:0}] [L23] return (__VERIFIER_nondet_bool() ? &d1 : &d2); [L34] RET, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}, get_dummy()={75:0}] [L34] struct dummy *pd1 = get_dummy(), *pd2 = get_dummy(); [L34] CALL, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}] [L23] EXPR __VERIFIER_nondet_bool() ? &d1 : &d2 VAL [__VERIFIER_nondet_bool()=1, __VERIFIER_nondet_bool() ? &d1 : &d2={75:0}, d1={75:0}, d2={79:0}] [L23] return (__VERIFIER_nondet_bool() ? &d1 : &d2); [L34] RET, EXPR get_dummy() VAL [d1={75:0}, d2={79:0}, get_dummy()={75:0}, pd1={75:0}] [L34] struct dummy *pd1 = get_dummy(), *pd2 = get_dummy(); [L35] int i = __VERIFIER_nondet_int(); [L36] COND TRUE pd1 != 0 && pd1 == pd2 && i >= 0 && i < 10 [L37] pd2->array[i] = i [L38] int *pa = &pd1->array[i]; [L39] EXPR pd2->array[i] [L39] i = pd2->array[i] - 10 [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-10, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-9, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-9, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-8, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-8, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-7, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-7, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-6, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-6, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-5, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-5, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-4, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-4, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-3, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-3, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-2, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-2, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=-1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=-1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=0, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=0, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND TRUE i <= *pa [L41] ++i VAL [d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] EXPR \read(*pa) VAL [\read(*pa)=0, d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L40] COND FALSE !(i <= *pa) [L43] CALL, EXPR check(pd2, i) VAL [\old(i)=1, d1={75:0}, d2={79:0}, s1={75:0}] [L28] EXPR s1->array[i] [L28] return s1->array[i] == i; [L43] RET, EXPR check(pd2, i) VAL [check(pd2, i)=0, d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] [L43] COND TRUE !check(pd2, i) [L50] __VERIFIER_error() VAL [d1={75:0}, d2={79:0}, i=1, pa={75:8}, pd1={75:0}, pd2={75:0}] - StatisticsResult: Ultimate Automizer benchmark data CFG has 6 procedures, 33 locations, 1 error locations. UNSAFE Result, 14.1s OverallTime, 10 OverallIterations, 12 TraceHistogramMax, 6.6s AutomataDifference, 0.0s DeadEndRemovalTime, 0.0s HoareAnnotationTime, HoareTripleCheckerStatistics: 271 SDtfs, 525 SDslu, 2475 SDs, 0 SdLazy, 2344 SolverSat, 278 SolverUnsat, 0 SolverUnknown, 0 SolverNotchecked, 1.1s Time, PredicateUnifierStatistics: 0 DeclaredPredicates, 520 GetRequests, 170 SyntacticMatches, 33 SemanticMatches, 317 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 3987 ImplicationChecksByTransitivity, 10.3s Time, 0.0s BasicInterpolantAutomatonTime, BiggestAbstraction: size=55occurred in iteration=9, traceCheckStatistics: No data available, InterpolantConsolidationStatistics: No data available, PathInvariantsStatistics: No data available, 0/0 InterpolantCoveringCapability, TotalInterpolationStatistics: No data available, 0.0s AbstIntTime, 0 AbstIntIterations, 0 AbstIntStrong, NaN AbsIntWeakeningRatio, NaN AbsIntAvgWeakeningVarsNumRemoved, NaN AbsIntAvgWeakenedConjuncts, 0.0s DumpTime, AutomataMinimizationStatistics: 0.0s AutomataMinimizationTime, 9 MinimizatonAttempts, 147 StatesRemovedByMinimization, 8 NontrivialMinimizations, HoareAnnotationStatistics: No data available, RefinementEngineStatistics: TraceCheckStatistics: 0.0s SsaConstructionTime, 0.4s SatisfiabilityAnalysisTime, 6.3s InterpolantComputationTime, 577 NumberOfCodeBlocks, 577 NumberOfCodeBlocksAsserted, 25 NumberOfCheckSat, 509 ConstructedInterpolants, 28 QuantifiedInterpolants, 176631 SizeOfPredicates, 49 NumberOfNonLiveVariables, 1430 ConjunctsInSsa, 203 ConjunctsInUnsatCore, 15 InterpolantComputations, 3 PerfectInterpolantSequences, 47/228 InterpolantCoveringCapability, InvariantSynthesisStatistics: No data available, InterpolantConsolidationStatistics: No data available, ReuseStatistics: No data available RESULT: Ultimate proved your program to be incorrect! Received shutdown request...