./Ultimate.py --spec ../../sv-benchmarks/c/properties/unreach-call.prp --file ../../sv-benchmarks/c/bitvector-regression/recHanoi03_false-unreach-call_true-termination.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_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/config/AutomizerReach.xml -i ../../sv-benchmarks/c/bitvector-regression/recHanoi03_false-unreach-call_true-termination.c -s /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Default.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/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 9cd87c15c4637a3ecd407847e5a675763d5fece5 ............................................................................................................................................................................................................................................................................................................................................................................................................................................................................ Execution finished normally Using bit-precise analysis Retrying with bit-precise analysis Calling Ultimate with: java -Dosgi.configuration.area=/tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/config/AutomizerReach.xml -i ../../sv-benchmarks/c/bitvector-regression/recHanoi03_false-unreach-call_true-termination.c -s /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Bitvector.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/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 9cd87c15c4637a3ecd407847e5a675763d5fece5 ...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 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 15:48:18,382 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 15:48:18,383 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 15:48:18,390 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 15:48:18,390 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 15:48:18,391 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 15:48:18,391 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 15:48:18,393 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 15:48:18,394 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 15:48:18,394 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 15:48:18,395 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 15:48:18,395 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 15:48:18,396 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 15:48:18,396 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 15:48:18,397 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 15:48:18,398 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 15:48:18,398 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 15:48:18,400 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 15:48:18,401 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 15:48:18,402 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 15:48:18,403 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 15:48:18,404 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 15:48:18,405 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 15:48:18,405 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 15:48:18,405 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 15:48:18,406 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 15:48:18,407 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 15:48:18,407 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 15:48:18,408 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 15:48:18,408 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 15:48:18,409 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 15:48:18,409 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 15:48:18,409 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 15:48:18,409 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 15:48:18,410 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 15:48:18,410 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 15:48:18,411 INFO L98 SettingsManager]: Beginning loading settings from /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/config/svcomp-Reach-32bit-Automizer_Default.epf [2018-11-23 15:48:18,418 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 15:48:18,419 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 15:48:18,419 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 15:48:18,419 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 15:48:18,420 INFO L131 SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults: [2018-11-23 15:48:18,420 INFO L133 SettingsManager]: * Create parallel compositions if possible=false [2018-11-23 15:48:18,420 INFO L133 SettingsManager]: * Use SBE=true [2018-11-23 15:48:18,420 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 15:48:18,420 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 15:48:18,421 INFO L133 SettingsManager]: * Overapproximate operations on floating types=true [2018-11-23 15:48:18,421 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 15:48:18,421 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 15:48:18,421 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 15:48:18,421 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 15:48:18,421 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 15:48:18,421 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 15:48:18,422 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 15:48:18,422 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 15:48:18,422 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 15:48:18,422 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 15:48:18,422 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 15:48:18,422 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 15:48:18,423 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 15:48:18,423 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 15:48:18,423 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 15:48:18,423 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 15:48:18,423 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 15:48:18,423 INFO L133 SettingsManager]: * Trace refinement strategy=CAMEL [2018-11-23 15:48:18,424 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 15:48:18,424 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in [2018-11-23 15:48:18,424 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_031b1ec5-6c9e-4829-9c69-8224450d9c42/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 -> 9cd87c15c4637a3ecd407847e5a675763d5fece5 [2018-11-23 15:48:18,445 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 15:48:18,453 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 15:48:18,455 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 15:48:18,456 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 15:48:18,456 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 15:48:18,457 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/../../sv-benchmarks/c/bitvector-regression/recHanoi03_false-unreach-call_true-termination.c [2018-11-23 15:48:18,493 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/deed10edd/ee22dc6cee8d4a5cb78457611947c822/FLAG32aff8bed [2018-11-23 15:48:18,787 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 15:48:18,787 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/sv-benchmarks/c/bitvector-regression/recHanoi03_false-unreach-call_true-termination.c [2018-11-23 15:48:18,791 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/deed10edd/ee22dc6cee8d4a5cb78457611947c822/FLAG32aff8bed [2018-11-23 15:48:18,800 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/deed10edd/ee22dc6cee8d4a5cb78457611947c822 [2018-11-23 15:48:18,802 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 15:48:18,803 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 15:48:18,804 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 15:48:18,804 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 15:48:18,807 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 15:48:18,807 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,809 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@4bb4fcbe and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18, skipping insertion in model container [2018-11-23 15:48:18,809 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,815 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 15:48:18,826 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 15:48:18,926 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 15:48:18,928 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 15:48:18,938 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 15:48:18,947 INFO L195 MainTranslator]: Completed translation [2018-11-23 15:48:18,947 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18 WrapperNode [2018-11-23 15:48:18,947 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 15:48:18,948 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 15:48:18,948 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 15:48:18,948 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 15:48:18,955 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,960 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,966 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 15:48:18,966 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 15:48:18,966 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 15:48:18,966 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 15:48:18,974 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,974 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,974 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,975 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,978 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,980 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,980 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... [2018-11-23 15:48:18,981 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 15:48:18,982 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 15:48:18,982 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 15:48:18,982 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 15:48:18,982 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/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 15:48:19,056 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 15:48:19,057 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 15:48:19,057 INFO L130 BoogieDeclarations]: Found specification of procedure hanoi [2018-11-23 15:48:19,057 INFO L138 BoogieDeclarations]: Found implementation of procedure hanoi [2018-11-23 15:48:19,057 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 15:48:19,057 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 15:48:19,057 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 15:48:19,057 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 15:48:19,170 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 15:48:19,170 INFO L280 CfgBuilder]: Removed 0 assue(true) statements. [2018-11-23 15:48:19,171 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 03:48:19 BoogieIcfgContainer [2018-11-23 15:48:19,171 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 15:48:19,171 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 15:48:19,171 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 15:48:19,174 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 15:48:19,174 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 03:48:18" (1/3) ... [2018-11-23 15:48:19,175 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@38f9c679 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 03:48:19, skipping insertion in model container [2018-11-23 15:48:19,175 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:18" (2/3) ... [2018-11-23 15:48:19,175 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@38f9c679 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 03:48:19, skipping insertion in model container [2018-11-23 15:48:19,175 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 03:48:19" (3/3) ... [2018-11-23 15:48:19,177 INFO L112 eAbstractionObserver]: Analyzing ICFG recHanoi03_false-unreach-call_true-termination.c [2018-11-23 15:48:19,185 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 15:48:19,191 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 15:48:19,205 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 15:48:19,230 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 15:48:19,230 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 15:48:19,230 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 15:48:19,230 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 15:48:19,230 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 15:48:19,230 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 15:48:19,230 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 15:48:19,231 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 15:48:19,231 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 15:48:19,244 INFO L276 IsEmpty]: Start isEmpty. Operand 21 states. [2018-11-23 15:48:19,250 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 15 [2018-11-23 15:48:19,250 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:19,251 INFO L402 BasicCegarLoop]: trace histogram [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:19,253 INFO L423 AbstractCegarLoop]: === Iteration 1 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:19,258 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:19,258 INFO L82 PathProgramCache]: Analyzing trace with hash 913793727, now seen corresponding path program 1 times [2018-11-23 15:48:19,260 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 15:48:19,260 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 15:48:19,304 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 15:48:19,305 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 15:48:19,305 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 15:48:19,336 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 15:48:19,343 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 15:48:19,355 INFO L469 BasicCegarLoop]: Counterexample might be feasible ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); [?] assume true; [?] RET #30#return; [?] CALL call #t~ret3 := main(); [?] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647;~n~0 := #t~nondet1;havoc #t~nondet1; VAL [main_~n~0=1] [?] assume !(~n~0 < 1); VAL [main_~n~0=1] [?] CALL call #t~ret2 := hanoi(~n~0); VAL [|hanoi_#in~n|=1] [?] ~n := #in~n; VAL [hanoi_~n=1, |hanoi_#in~n|=1] [?] assume 1 == ~n;#res := 1; VAL [hanoi_~n=1, |hanoi_#in~n|=1, |hanoi_#res|=1] [?] assume true; VAL [hanoi_~n=1, |hanoi_#in~n|=1, |hanoi_#res|=1] [?] RET #34#return; VAL [main_~n~0=1, |main_#t~ret2|=1] [?] ~result~0 := #t~ret2;havoc #t~ret2; VAL [main_~n~0=1, main_~result~0=1] [?] assume !((1 + ~result~0) % 4294967296 > 0 && (1 + ~result~0) % 4294967296 == ~shiftLeft(1, ~n~0) % 4294967296); VAL [main_~n~0=1, main_~result~0=1] [?] assume !false; VAL [main_~n~0=1, main_~result~0=1] [?] CALL call ULTIMATE.init(); [?] ensures true; [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=1] [L26-L28] assume !(~n~0 < 1); VAL [~n~0=1] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=1] [L16-L21] ~n := #in~n; VAL [#in~n=1, ~n=1] [L17-L19] assume 1 == ~n; [L18] #res := 1; VAL [#in~n=1, #res=1, ~n=1] [L16-L21] ensures true; VAL [#in~n=1, #res=1, ~n=1] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=1, ~n~0=1] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=1, ~result~0=1] [L31-L35] assume !((1 + ~result~0) % 4294967296 > 0 && (1 + ~result~0) % 4294967296 == ~shiftLeft(1, ~n~0) % 4294967296); VAL [~n~0=1, ~result~0=1] [L34] assert false; VAL [~n~0=1, ~result~0=1] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); [?] ensures true; [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=1] [L26-L28] assume !(~n~0 < 1); VAL [~n~0=1] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=1] [L16-L21] ~n := #in~n; VAL [#in~n=1, ~n=1] [L17-L19] assume 1 == ~n; [L18] #res := 1; VAL [#in~n=1, #res=1, ~n=1] [L16-L21] ensures true; VAL [#in~n=1, #res=1, ~n=1] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=1, ~n~0=1] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=1, ~result~0=1] [L31-L35] assume !((1 + ~result~0) % 4294967296 > 0 && (1 + ~result~0) % 4294967296 == ~shiftLeft(1, ~n~0) % 4294967296); VAL [~n~0=1, ~result~0=1] [L34] assert false; VAL [~n~0=1, ~result~0=1] [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=1] [L26] COND FALSE !(~n~0 < 1) VAL [~n~0=1] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=1] [L16-L21] ~n := #in~n; VAL [#in~n=1, ~n=1] [L17] COND TRUE 1 == ~n [L18] #res := 1; VAL [#in~n=1, #res=1, ~n=1] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=1, ~n~0=1] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=1, ~result~0=1] [L31] COND FALSE !((1 + ~result~0) % 4294967296 > 0 && (1 + ~result~0) % 4294967296 == ~shiftLeft(1, ~n~0) % 4294967296) VAL [~n~0=1, ~result~0=1] [L34] assert false; VAL [~n~0=1, ~result~0=1] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=1] [L26] COND FALSE !(~n~0 < 1) VAL [~n~0=1] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=1] [L16-L21] ~n := #in~n; VAL [#in~n=1, ~n=1] [L17] COND TRUE 1 == ~n [L18] #res := 1; VAL [#in~n=1, #res=1, ~n=1] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=1, ~n~0=1] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=1, ~result~0=1] [L31] COND FALSE !((1 + ~result~0) % 4294967296 > 0 && (1 + ~result~0) % 4294967296 == ~shiftLeft(1, ~n~0) % 4294967296) VAL [~n~0=1, ~result~0=1] [L34] assert false; VAL [~n~0=1, ~result~0=1] [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=1] [L26] COND FALSE !(~n~0 < 1) VAL [~n~0=1] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=1] [L16-L21] ~n := #in~n; VAL [#in~n=1, ~n=1] [L17] COND TRUE 1 == ~n [L18] #res := 1; VAL [#in~n=1, #res=1, ~n=1] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=1, ~n~0=1] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=1, ~result~0=1] [L31] COND FALSE !((1 + ~result~0) % 4294967296 > 0 && (1 + ~result~0) % 4294967296 == ~shiftLeft(1, ~n~0) % 4294967296) VAL [~n~0=1, ~result~0=1] [L34] assert false; VAL [~n~0=1, ~result~0=1] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] assume -2147483648 <= #t~nondet1 && #t~nondet1 <= 2147483647; [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=1] [L26] COND FALSE !(~n~0 < 1) VAL [~n~0=1] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=1] [L16-L21] ~n := #in~n; VAL [#in~n=1, ~n=1] [L17] COND TRUE 1 == ~n [L18] #res := 1; VAL [#in~n=1, #res=1, ~n=1] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=1, ~n~0=1] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=1, ~result~0=1] [L31] COND FALSE !((1 + ~result~0) % 4294967296 > 0 && (1 + ~result~0) % 4294967296 == ~shiftLeft(1, ~n~0) % 4294967296) VAL [~n~0=1, ~result~0=1] [L34] assert false; VAL [~n~0=1, ~result~0=1] [L25] int n = __VERIFIER_nondet_int(); [L26] COND FALSE !(n < 1) VAL [n=1] [L29] CALL, EXPR hanoi(n) VAL [\old(n)=1] [L17] COND TRUE n == 1 [L18] return 1; VAL [\old(n)=1, \result=1, n=1] [L29] RET, EXPR hanoi(n) VAL [hanoi(n)=1, n=1] [L29] unsigned result = hanoi(n); [L31] COND FALSE !(result+1>0 && result+1 == 1<0 && result+1 == 1< main Applying setting for plugin de.uni_freiburg.informatik.ultimate.witnessprinter: Witness directory -> /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/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 -> 9cd87c15c4637a3ecd407847e5a675763d5fece5 [2018-11-23 15:48:20,923 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 15:48:20,932 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 15:48:20,935 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 15:48:20,936 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 15:48:20,937 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 15:48:20,937 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/../../sv-benchmarks/c/bitvector-regression/recHanoi03_false-unreach-call_true-termination.c [2018-11-23 15:48:20,983 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/620bf0660/169aaf3d60014eca8758457770226979/FLAGcbb8cf4e7 [2018-11-23 15:48:21,313 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 15:48:21,314 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/sv-benchmarks/c/bitvector-regression/recHanoi03_false-unreach-call_true-termination.c [2018-11-23 15:48:21,318 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/620bf0660/169aaf3d60014eca8758457770226979/FLAGcbb8cf4e7 [2018-11-23 15:48:21,329 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/data/620bf0660/169aaf3d60014eca8758457770226979 [2018-11-23 15:48:21,331 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 15:48:21,332 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 15:48:21,332 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 15:48:21,332 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 15:48:21,334 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 15:48:21,335 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,337 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@2b44462 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21, skipping insertion in model container [2018-11-23 15:48:21,337 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,343 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 15:48:21,357 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 15:48:21,478 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 15:48:21,481 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 15:48:21,492 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 15:48:21,500 INFO L195 MainTranslator]: Completed translation [2018-11-23 15:48:21,501 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21 WrapperNode [2018-11-23 15:48:21,501 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 15:48:21,501 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 15:48:21,501 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 15:48:21,502 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 15:48:21,508 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,513 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,518 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 15:48:21,518 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 15:48:21,518 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 15:48:21,519 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 15:48:21,526 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,526 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,527 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,527 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,532 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,533 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,534 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... [2018-11-23 15:48:21,535 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 15:48:21,536 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 15:48:21,536 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 15:48:21,536 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 15:48:21,537 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/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 15:48:21,614 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 15:48:21,614 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 15:48:21,614 INFO L130 BoogieDeclarations]: Found specification of procedure hanoi [2018-11-23 15:48:21,614 INFO L138 BoogieDeclarations]: Found implementation of procedure hanoi [2018-11-23 15:48:21,614 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 15:48:21,614 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 15:48:21,614 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 15:48:21,614 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 15:48:21,716 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 15:48:21,717 INFO L280 CfgBuilder]: Removed 0 assue(true) statements. [2018-11-23 15:48:21,717 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 03:48:21 BoogieIcfgContainer [2018-11-23 15:48:21,717 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 15:48:21,718 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 15:48:21,718 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 15:48:21,720 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 15:48:21,721 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 03:48:21" (1/3) ... [2018-11-23 15:48:21,721 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@1f4e3ce3 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 03:48:21, skipping insertion in model container [2018-11-23 15:48:21,721 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 03:48:21" (2/3) ... [2018-11-23 15:48:21,722 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@1f4e3ce3 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 03:48:21, skipping insertion in model container [2018-11-23 15:48:21,722 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 03:48:21" (3/3) ... [2018-11-23 15:48:21,723 INFO L112 eAbstractionObserver]: Analyzing ICFG recHanoi03_false-unreach-call_true-termination.c [2018-11-23 15:48:21,730 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 15:48:21,734 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 15:48:21,744 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 15:48:21,765 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 15:48:21,765 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 15:48:21,766 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 15:48:21,766 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 15:48:21,766 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 15:48:21,766 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 15:48:21,766 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 15:48:21,766 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 15:48:21,766 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 15:48:21,781 INFO L276 IsEmpty]: Start isEmpty. Operand 21 states. [2018-11-23 15:48:21,785 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 15 [2018-11-23 15:48:21,785 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:21,786 INFO L402 BasicCegarLoop]: trace histogram [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:21,787 INFO L423 AbstractCegarLoop]: === Iteration 1 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:21,791 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:21,791 INFO L82 PathProgramCache]: Analyzing trace with hash 913793727, now seen corresponding path program 1 times [2018-11-23 15:48:21,794 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:21,794 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 2 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 2 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:21,809 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 15:48:21,833 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 15:48:21,839 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:21,947 INFO L134 CoverageAnalysis]: Checked inductivity of 0 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 15:48:21,947 INFO L312 TraceCheckSpWp]: Omiting computation of backward sequence because forward sequence was already perfect [2018-11-23 15:48:21,950 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 15:48:21,950 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [7] imperfect sequences [] total 7 [2018-11-23 15:48:21,954 INFO L459 AbstractCegarLoop]: Interpolant automaton has 7 states [2018-11-23 15:48:21,962 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 7 interpolants. [2018-11-23 15:48:21,962 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=13, Invalid=29, Unknown=0, NotChecked=0, Total=42 [2018-11-23 15:48:21,964 INFO L87 Difference]: Start difference. First operand 21 states. Second operand 7 states. [2018-11-23 15:48:22,060 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:22,060 INFO L93 Difference]: Finished difference Result 35 states and 39 transitions. [2018-11-23 15:48:22,061 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 7 states. [2018-11-23 15:48:22,062 INFO L78 Accepts]: Start accepts. Automaton has 7 states. Word has length 14 [2018-11-23 15:48:22,063 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:22,071 INFO L225 Difference]: With dead ends: 35 [2018-11-23 15:48:22,072 INFO L226 Difference]: Without dead ends: 19 [2018-11-23 15:48:22,075 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 14 GetRequests, 8 SyntacticMatches, 0 SemanticMatches, 6 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 2 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=17, Invalid=39, Unknown=0, NotChecked=0, Total=56 [2018-11-23 15:48:22,089 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 19 states. [2018-11-23 15:48:22,105 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 19 to 19. [2018-11-23 15:48:22,106 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 19 states. [2018-11-23 15:48:22,107 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 19 states to 19 states and 20 transitions. [2018-11-23 15:48:22,107 INFO L78 Accepts]: Start accepts. Automaton has 19 states and 20 transitions. Word has length 14 [2018-11-23 15:48:22,108 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:22,108 INFO L480 AbstractCegarLoop]: Abstraction has 19 states and 20 transitions. [2018-11-23 15:48:22,108 INFO L481 AbstractCegarLoop]: Interpolant automaton has 7 states. [2018-11-23 15:48:22,108 INFO L276 IsEmpty]: Start isEmpty. Operand 19 states and 20 transitions. [2018-11-23 15:48:22,109 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 21 [2018-11-23 15:48:22,109 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:22,109 INFO L402 BasicCegarLoop]: trace histogram [2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:22,110 INFO L423 AbstractCegarLoop]: === Iteration 2 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:22,110 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:22,110 INFO L82 PathProgramCache]: Analyzing trace with hash -1998834103, now seen corresponding path program 1 times [2018-11-23 15:48:22,110 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:22,110 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 3 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 3 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:22,138 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 15:48:22,149 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 15:48:22,153 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:22,256 INFO L134 CoverageAnalysis]: Checked inductivity of 4 backedges. 0 proven. 2 refuted. 0 times theorem prover too weak. 2 trivial. 0 not checked. [2018-11-23 15:48:22,256 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:22,766 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 15:48:22,767 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:22,768 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [9, 9] total 16 [2018-11-23 15:48:22,769 INFO L459 AbstractCegarLoop]: Interpolant automaton has 16 states [2018-11-23 15:48:22,769 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 16 interpolants. [2018-11-23 15:48:22,770 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=43, Invalid=197, Unknown=0, NotChecked=0, Total=240 [2018-11-23 15:48:22,770 INFO L87 Difference]: Start difference. First operand 19 states and 20 transitions. Second operand 16 states. [2018-11-23 15:48:23,060 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:23,060 INFO L93 Difference]: Finished difference Result 31 states and 33 transitions. [2018-11-23 15:48:23,061 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 13 states. [2018-11-23 15:48:23,061 INFO L78 Accepts]: Start accepts. Automaton has 16 states. Word has length 20 [2018-11-23 15:48:23,062 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:23,062 INFO L225 Difference]: With dead ends: 31 [2018-11-23 15:48:23,062 INFO L226 Difference]: Without dead ends: 25 [2018-11-23 15:48:23,063 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 46 GetRequests, 22 SyntacticMatches, 3 SemanticMatches, 21 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 64 ImplicationChecksByTransitivity, 0.5s TimeCoverageRelationStatistics Valid=90, Invalid=416, Unknown=0, NotChecked=0, Total=506 [2018-11-23 15:48:23,063 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 25 states. [2018-11-23 15:48:23,067 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 25 to 25. [2018-11-23 15:48:23,067 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 25 states. [2018-11-23 15:48:23,068 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 25 states to 25 states and 26 transitions. [2018-11-23 15:48:23,068 INFO L78 Accepts]: Start accepts. Automaton has 25 states and 26 transitions. Word has length 20 [2018-11-23 15:48:23,068 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:23,068 INFO L480 AbstractCegarLoop]: Abstraction has 25 states and 26 transitions. [2018-11-23 15:48:23,068 INFO L481 AbstractCegarLoop]: Interpolant automaton has 16 states. [2018-11-23 15:48:23,068 INFO L276 IsEmpty]: Start isEmpty. Operand 25 states and 26 transitions. [2018-11-23 15:48:23,069 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 33 [2018-11-23 15:48:23,069 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:23,069 INFO L402 BasicCegarLoop]: trace histogram [4, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:23,069 INFO L423 AbstractCegarLoop]: === Iteration 3 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:23,069 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:23,069 INFO L82 PathProgramCache]: Analyzing trace with hash -547108535, now seen corresponding path program 2 times [2018-11-23 15:48:23,070 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:23,070 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 4 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 4 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:23,081 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST1 [2018-11-23 15:48:23,104 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 15:48:23,105 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:48:23,108 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:23,245 INFO L134 CoverageAnalysis]: Checked inductivity of 30 backedges. 0 proven. 15 refuted. 0 times theorem prover too weak. 15 trivial. 0 not checked. [2018-11-23 15:48:23,245 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:24,019 INFO L134 CoverageAnalysis]: Checked inductivity of 30 backedges. 0 proven. 24 refuted. 0 times theorem prover too weak. 6 trivial. 0 not checked. [2018-11-23 15:48:24,020 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:24,020 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [13, 15] total 26 [2018-11-23 15:48:24,020 INFO L459 AbstractCegarLoop]: Interpolant automaton has 26 states [2018-11-23 15:48:24,021 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 26 interpolants. [2018-11-23 15:48:24,021 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=81, Invalid=569, Unknown=0, NotChecked=0, Total=650 [2018-11-23 15:48:24,021 INFO L87 Difference]: Start difference. First operand 25 states and 26 transitions. Second operand 26 states. [2018-11-23 15:48:24,528 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:24,528 INFO L93 Difference]: Finished difference Result 37 states and 39 transitions. [2018-11-23 15:48:24,528 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 17 states. [2018-11-23 15:48:24,528 INFO L78 Accepts]: Start accepts. Automaton has 26 states. Word has length 32 [2018-11-23 15:48:24,529 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:24,529 INFO L225 Difference]: With dead ends: 37 [2018-11-23 15:48:24,529 INFO L226 Difference]: Without dead ends: 31 [2018-11-23 15:48:24,530 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 74 GetRequests, 36 SyntacticMatches, 3 SemanticMatches, 35 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 172 ImplicationChecksByTransitivity, 0.8s TimeCoverageRelationStatistics Valid=182, Invalid=1150, Unknown=0, NotChecked=0, Total=1332 [2018-11-23 15:48:24,530 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 31 states. [2018-11-23 15:48:24,534 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 31 to 31. [2018-11-23 15:48:24,534 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 31 states. [2018-11-23 15:48:24,535 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 31 states to 31 states and 32 transitions. [2018-11-23 15:48:24,535 INFO L78 Accepts]: Start accepts. Automaton has 31 states and 32 transitions. Word has length 32 [2018-11-23 15:48:24,536 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:24,536 INFO L480 AbstractCegarLoop]: Abstraction has 31 states and 32 transitions. [2018-11-23 15:48:24,536 INFO L481 AbstractCegarLoop]: Interpolant automaton has 26 states. [2018-11-23 15:48:24,537 INFO L276 IsEmpty]: Start isEmpty. Operand 31 states and 32 transitions. [2018-11-23 15:48:24,537 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 45 [2018-11-23 15:48:24,537 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:24,537 INFO L402 BasicCegarLoop]: trace histogram [6, 6, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:24,538 INFO L423 AbstractCegarLoop]: === Iteration 4 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:24,538 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:24,538 INFO L82 PathProgramCache]: Analyzing trace with hash 1461718089, now seen corresponding path program 3 times [2018-11-23 15:48:24,538 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:24,538 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 5 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 5 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:24,553 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST2 [2018-11-23 15:48:24,618 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST2 issued 6 check-sat command(s) [2018-11-23 15:48:24,618 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:48:24,622 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:24,802 INFO L134 CoverageAnalysis]: Checked inductivity of 80 backedges. 0 proven. 40 refuted. 0 times theorem prover too weak. 40 trivial. 0 not checked. [2018-11-23 15:48:24,802 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:26,250 INFO L134 CoverageAnalysis]: Checked inductivity of 80 backedges. 0 proven. 65 refuted. 0 times theorem prover too weak. 15 trivial. 0 not checked. [2018-11-23 15:48:26,253 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:26,253 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [17, 21] total 36 [2018-11-23 15:48:26,253 INFO L459 AbstractCegarLoop]: Interpolant automaton has 36 states [2018-11-23 15:48:26,253 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 36 interpolants. [2018-11-23 15:48:26,254 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=119, Invalid=1141, Unknown=0, NotChecked=0, Total=1260 [2018-11-23 15:48:26,254 INFO L87 Difference]: Start difference. First operand 31 states and 32 transitions. Second operand 36 states. [2018-11-23 15:48:27,006 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:27,006 INFO L93 Difference]: Finished difference Result 43 states and 45 transitions. [2018-11-23 15:48:27,007 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 21 states. [2018-11-23 15:48:27,007 INFO L78 Accepts]: Start accepts. Automaton has 36 states. Word has length 44 [2018-11-23 15:48:27,007 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:27,008 INFO L225 Difference]: With dead ends: 43 [2018-11-23 15:48:27,008 INFO L226 Difference]: Without dead ends: 37 [2018-11-23 15:48:27,009 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 102 GetRequests, 50 SyntacticMatches, 3 SemanticMatches, 49 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 331 ImplicationChecksByTransitivity, 1.3s TimeCoverageRelationStatistics Valid=290, Invalid=2260, Unknown=0, NotChecked=0, Total=2550 [2018-11-23 15:48:27,009 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 37 states. [2018-11-23 15:48:27,013 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 37 to 37. [2018-11-23 15:48:27,013 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 37 states. [2018-11-23 15:48:27,014 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 37 states to 37 states and 38 transitions. [2018-11-23 15:48:27,014 INFO L78 Accepts]: Start accepts. Automaton has 37 states and 38 transitions. Word has length 44 [2018-11-23 15:48:27,015 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:27,015 INFO L480 AbstractCegarLoop]: Abstraction has 37 states and 38 transitions. [2018-11-23 15:48:27,015 INFO L481 AbstractCegarLoop]: Interpolant automaton has 36 states. [2018-11-23 15:48:27,015 INFO L276 IsEmpty]: Start isEmpty. Operand 37 states and 38 transitions. [2018-11-23 15:48:27,016 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 57 [2018-11-23 15:48:27,017 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:27,017 INFO L402 BasicCegarLoop]: trace histogram [8, 8, 7, 7, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:27,018 INFO L423 AbstractCegarLoop]: === Iteration 5 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:27,018 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:27,018 INFO L82 PathProgramCache]: Analyzing trace with hash 585432905, now seen corresponding path program 4 times [2018-11-23 15:48:27,018 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:27,019 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 6 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 6 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:27,032 INFO L101 rtionOrderModulation]: Changing assertion order to TERMS_WITH_SMALL_CONSTANTS_FIRST [2018-11-23 15:48:27,061 INFO L249 tOrderPrioritization]: Assert order TERMS_WITH_SMALL_CONSTANTS_FIRST issued 0 check-sat command(s) [2018-11-23 15:48:27,061 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:48:27,066 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:27,296 INFO L134 CoverageAnalysis]: Checked inductivity of 154 backedges. 0 proven. 77 refuted. 0 times theorem prover too weak. 77 trivial. 0 not checked. [2018-11-23 15:48:27,297 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:29,418 INFO L134 CoverageAnalysis]: Checked inductivity of 154 backedges. 0 proven. 126 refuted. 0 times theorem prover too weak. 28 trivial. 0 not checked. [2018-11-23 15:48:29,420 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:29,420 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [21, 27] total 46 [2018-11-23 15:48:29,420 INFO L459 AbstractCegarLoop]: Interpolant automaton has 46 states [2018-11-23 15:48:29,420 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 46 interpolants. [2018-11-23 15:48:29,421 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=157, Invalid=1913, Unknown=0, NotChecked=0, Total=2070 [2018-11-23 15:48:29,421 INFO L87 Difference]: Start difference. First operand 37 states and 38 transitions. Second operand 46 states. [2018-11-23 15:48:30,458 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:30,459 INFO L93 Difference]: Finished difference Result 49 states and 51 transitions. [2018-11-23 15:48:30,459 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 25 states. [2018-11-23 15:48:30,459 INFO L78 Accepts]: Start accepts. Automaton has 46 states. Word has length 56 [2018-11-23 15:48:30,460 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:30,460 INFO L225 Difference]: With dead ends: 49 [2018-11-23 15:48:30,460 INFO L226 Difference]: Without dead ends: 43 [2018-11-23 15:48:30,461 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 130 GetRequests, 62 SyntacticMatches, 5 SemanticMatches, 63 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 542 ImplicationChecksByTransitivity, 1.9s TimeCoverageRelationStatistics Valid=414, Invalid=3746, Unknown=0, NotChecked=0, Total=4160 [2018-11-23 15:48:30,461 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 43 states. [2018-11-23 15:48:30,465 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 43 to 43. [2018-11-23 15:48:30,465 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 43 states. [2018-11-23 15:48:30,465 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 43 states to 43 states and 44 transitions. [2018-11-23 15:48:30,466 INFO L78 Accepts]: Start accepts. Automaton has 43 states and 44 transitions. Word has length 56 [2018-11-23 15:48:30,466 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:30,466 INFO L480 AbstractCegarLoop]: Abstraction has 43 states and 44 transitions. [2018-11-23 15:48:30,466 INFO L481 AbstractCegarLoop]: Interpolant automaton has 46 states. [2018-11-23 15:48:30,466 INFO L276 IsEmpty]: Start isEmpty. Operand 43 states and 44 transitions. [2018-11-23 15:48:30,467 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 69 [2018-11-23 15:48:30,467 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:30,468 INFO L402 BasicCegarLoop]: trace histogram [10, 10, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:30,468 INFO L423 AbstractCegarLoop]: === Iteration 6 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:30,468 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:30,468 INFO L82 PathProgramCache]: Analyzing trace with hash 579248713, now seen corresponding path program 5 times [2018-11-23 15:48:30,468 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:30,469 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 7 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 7 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:30,490 INFO L101 rtionOrderModulation]: Changing assertion order to INSIDE_LOOP_FIRST1 [2018-11-23 15:48:30,601 INFO L249 tOrderPrioritization]: Assert order INSIDE_LOOP_FIRST1 issued 10 check-sat command(s) [2018-11-23 15:48:30,602 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:48:30,606 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:30,886 INFO L134 CoverageAnalysis]: Checked inductivity of 252 backedges. 0 proven. 126 refuted. 0 times theorem prover too weak. 126 trivial. 0 not checked. [2018-11-23 15:48:30,886 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:34,103 INFO L134 CoverageAnalysis]: Checked inductivity of 252 backedges. 0 proven. 207 refuted. 0 times theorem prover too weak. 45 trivial. 0 not checked. [2018-11-23 15:48:34,105 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:34,105 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [25, 33] total 56 [2018-11-23 15:48:34,105 INFO L459 AbstractCegarLoop]: Interpolant automaton has 56 states [2018-11-23 15:48:34,106 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 56 interpolants. [2018-11-23 15:48:34,106 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=195, Invalid=2885, Unknown=0, NotChecked=0, Total=3080 [2018-11-23 15:48:34,106 INFO L87 Difference]: Start difference. First operand 43 states and 44 transitions. Second operand 56 states. [2018-11-23 15:48:35,555 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:35,555 INFO L93 Difference]: Finished difference Result 55 states and 57 transitions. [2018-11-23 15:48:35,556 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 29 states. [2018-11-23 15:48:35,556 INFO L78 Accepts]: Start accepts. Automaton has 56 states. Word has length 68 [2018-11-23 15:48:35,556 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:35,556 INFO L225 Difference]: With dead ends: 55 [2018-11-23 15:48:35,557 INFO L226 Difference]: Without dead ends: 49 [2018-11-23 15:48:35,558 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 158 GetRequests, 73 SyntacticMatches, 8 SemanticMatches, 77 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 805 ImplicationChecksByTransitivity, 2.7s TimeCoverageRelationStatistics Valid=554, Invalid=5608, Unknown=0, NotChecked=0, Total=6162 [2018-11-23 15:48:35,558 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 49 states. [2018-11-23 15:48:35,561 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 49 to 49. [2018-11-23 15:48:35,561 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 49 states. [2018-11-23 15:48:35,562 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 49 states to 49 states and 50 transitions. [2018-11-23 15:48:35,562 INFO L78 Accepts]: Start accepts. Automaton has 49 states and 50 transitions. Word has length 68 [2018-11-23 15:48:35,562 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:35,562 INFO L480 AbstractCegarLoop]: Abstraction has 49 states and 50 transitions. [2018-11-23 15:48:35,562 INFO L481 AbstractCegarLoop]: Interpolant automaton has 56 states. [2018-11-23 15:48:35,562 INFO L276 IsEmpty]: Start isEmpty. Operand 49 states and 50 transitions. [2018-11-23 15:48:35,562 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 81 [2018-11-23 15:48:35,563 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:35,563 INFO L402 BasicCegarLoop]: trace histogram [12, 12, 11, 11, 11, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:35,563 INFO L423 AbstractCegarLoop]: === Iteration 7 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:35,563 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:35,563 INFO L82 PathProgramCache]: Analyzing trace with hash 584643913, now seen corresponding path program 6 times [2018-11-23 15:48:35,563 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:35,563 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 8 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 8 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:35,575 INFO L101 rtionOrderModulation]: Changing assertion order to MIX_INSIDE_OUTSIDE [2018-11-23 15:48:35,773 INFO L249 tOrderPrioritization]: Assert order MIX_INSIDE_OUTSIDE issued 12 check-sat command(s) [2018-11-23 15:48:35,773 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:48:35,783 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:36,146 INFO L134 CoverageAnalysis]: Checked inductivity of 374 backedges. 0 proven. 187 refuted. 0 times theorem prover too weak. 187 trivial. 0 not checked. [2018-11-23 15:48:36,146 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:40,573 INFO L134 CoverageAnalysis]: Checked inductivity of 374 backedges. 0 proven. 308 refuted. 0 times theorem prover too weak. 66 trivial. 0 not checked. [2018-11-23 15:48:40,575 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:40,576 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [29, 39] total 66 [2018-11-23 15:48:40,576 INFO L459 AbstractCegarLoop]: Interpolant automaton has 66 states [2018-11-23 15:48:40,576 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 66 interpolants. [2018-11-23 15:48:40,577 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=233, Invalid=4057, Unknown=0, NotChecked=0, Total=4290 [2018-11-23 15:48:40,577 INFO L87 Difference]: Start difference. First operand 49 states and 50 transitions. Second operand 66 states. [2018-11-23 15:48:42,550 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:42,550 INFO L93 Difference]: Finished difference Result 61 states and 63 transitions. [2018-11-23 15:48:42,551 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 33 states. [2018-11-23 15:48:42,551 INFO L78 Accepts]: Start accepts. Automaton has 66 states. Word has length 80 [2018-11-23 15:48:42,551 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:42,552 INFO L225 Difference]: With dead ends: 61 [2018-11-23 15:48:42,552 INFO L226 Difference]: Without dead ends: 55 [2018-11-23 15:48:42,553 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 186 GetRequests, 91 SyntacticMatches, 4 SemanticMatches, 91 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 1120 ImplicationChecksByTransitivity, 3.8s TimeCoverageRelationStatistics Valid=710, Invalid=7846, Unknown=0, NotChecked=0, Total=8556 [2018-11-23 15:48:42,554 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 55 states. [2018-11-23 15:48:42,558 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 55 to 55. [2018-11-23 15:48:42,558 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 55 states. [2018-11-23 15:48:42,558 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 55 states to 55 states and 56 transitions. [2018-11-23 15:48:42,558 INFO L78 Accepts]: Start accepts. Automaton has 55 states and 56 transitions. Word has length 80 [2018-11-23 15:48:42,559 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:42,559 INFO L480 AbstractCegarLoop]: Abstraction has 55 states and 56 transitions. [2018-11-23 15:48:42,559 INFO L481 AbstractCegarLoop]: Interpolant automaton has 66 states. [2018-11-23 15:48:42,559 INFO L276 IsEmpty]: Start isEmpty. Operand 55 states and 56 transitions. [2018-11-23 15:48:42,560 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 93 [2018-11-23 15:48:42,560 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:42,560 INFO L402 BasicCegarLoop]: trace histogram [14, 14, 13, 13, 13, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:42,560 INFO L423 AbstractCegarLoop]: === Iteration 8 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:42,561 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:42,561 INFO L82 PathProgramCache]: Analyzing trace with hash 498071625, now seen corresponding path program 7 times [2018-11-23 15:48:42,561 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:42,561 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 9 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 9 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:42,573 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 15:48:42,611 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 15:48:42,621 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:43,108 INFO L134 CoverageAnalysis]: Checked inductivity of 520 backedges. 0 proven. 260 refuted. 0 times theorem prover too weak. 260 trivial. 0 not checked. [2018-11-23 15:48:43,108 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:48,801 INFO L134 CoverageAnalysis]: Checked inductivity of 520 backedges. 0 proven. 429 refuted. 0 times theorem prover too weak. 91 trivial. 0 not checked. [2018-11-23 15:48:48,803 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:48,804 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [33, 45] total 76 [2018-11-23 15:48:48,804 INFO L459 AbstractCegarLoop]: Interpolant automaton has 76 states [2018-11-23 15:48:48,804 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 76 interpolants. [2018-11-23 15:48:48,806 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=271, Invalid=5429, Unknown=0, NotChecked=0, Total=5700 [2018-11-23 15:48:48,806 INFO L87 Difference]: Start difference. First operand 55 states and 56 transitions. Second operand 76 states. [2018-11-23 15:48:50,996 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:48:50,996 INFO L93 Difference]: Finished difference Result 67 states and 69 transitions. [2018-11-23 15:48:50,996 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 37 states. [2018-11-23 15:48:50,997 INFO L78 Accepts]: Start accepts. Automaton has 76 states. Word has length 92 [2018-11-23 15:48:50,997 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:48:50,997 INFO L225 Difference]: With dead ends: 67 [2018-11-23 15:48:50,998 INFO L226 Difference]: Without dead ends: 61 [2018-11-23 15:48:50,999 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 214 GetRequests, 106 SyntacticMatches, 3 SemanticMatches, 105 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 1487 ImplicationChecksByTransitivity, 4.6s TimeCoverageRelationStatistics Valid=882, Invalid=10460, Unknown=0, NotChecked=0, Total=11342 [2018-11-23 15:48:50,999 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 61 states. [2018-11-23 15:48:51,004 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 61 to 61. [2018-11-23 15:48:51,004 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 61 states. [2018-11-23 15:48:51,005 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 61 states to 61 states and 62 transitions. [2018-11-23 15:48:51,005 INFO L78 Accepts]: Start accepts. Automaton has 61 states and 62 transitions. Word has length 92 [2018-11-23 15:48:51,005 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:48:51,005 INFO L480 AbstractCegarLoop]: Abstraction has 61 states and 62 transitions. [2018-11-23 15:48:51,005 INFO L481 AbstractCegarLoop]: Interpolant automaton has 76 states. [2018-11-23 15:48:51,005 INFO L276 IsEmpty]: Start isEmpty. Operand 61 states and 62 transitions. [2018-11-23 15:48:51,006 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 105 [2018-11-23 15:48:51,006 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:48:51,006 INFO L402 BasicCegarLoop]: trace histogram [16, 16, 15, 15, 15, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:48:51,007 INFO L423 AbstractCegarLoop]: === Iteration 9 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:48:51,007 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:48:51,007 INFO L82 PathProgramCache]: Analyzing trace with hash 2044701513, now seen corresponding path program 8 times [2018-11-23 15:48:51,007 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:48:51,007 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 10 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 10 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:48:51,019 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST1 [2018-11-23 15:48:51,068 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 15:48:51,068 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:48:51,080 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:48:51,654 INFO L134 CoverageAnalysis]: Checked inductivity of 690 backedges. 0 proven. 345 refuted. 0 times theorem prover too weak. 345 trivial. 0 not checked. [2018-11-23 15:48:51,654 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:48:58,756 INFO L134 CoverageAnalysis]: Checked inductivity of 690 backedges. 0 proven. 570 refuted. 0 times theorem prover too weak. 120 trivial. 0 not checked. [2018-11-23 15:48:58,758 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:48:58,758 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [37, 51] total 86 [2018-11-23 15:48:58,758 INFO L459 AbstractCegarLoop]: Interpolant automaton has 86 states [2018-11-23 15:48:58,758 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 86 interpolants. [2018-11-23 15:48:58,759 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=309, Invalid=7001, Unknown=0, NotChecked=0, Total=7310 [2018-11-23 15:48:58,759 INFO L87 Difference]: Start difference. First operand 61 states and 62 transitions. Second operand 86 states. [2018-11-23 15:49:01,570 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:49:01,570 INFO L93 Difference]: Finished difference Result 73 states and 75 transitions. [2018-11-23 15:49:01,570 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 41 states. [2018-11-23 15:49:01,570 INFO L78 Accepts]: Start accepts. Automaton has 86 states. Word has length 104 [2018-11-23 15:49:01,571 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:49:01,571 INFO L225 Difference]: With dead ends: 73 [2018-11-23 15:49:01,571 INFO L226 Difference]: Without dead ends: 67 [2018-11-23 15:49:01,573 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 242 GetRequests, 120 SyntacticMatches, 3 SemanticMatches, 119 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 1906 ImplicationChecksByTransitivity, 5.7s TimeCoverageRelationStatistics Valid=1070, Invalid=13450, Unknown=0, NotChecked=0, Total=14520 [2018-11-23 15:49:01,573 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 67 states. [2018-11-23 15:49:01,576 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 67 to 67. [2018-11-23 15:49:01,577 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 67 states. [2018-11-23 15:49:01,577 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 67 states to 67 states and 68 transitions. [2018-11-23 15:49:01,577 INFO L78 Accepts]: Start accepts. Automaton has 67 states and 68 transitions. Word has length 104 [2018-11-23 15:49:01,578 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:49:01,578 INFO L480 AbstractCegarLoop]: Abstraction has 67 states and 68 transitions. [2018-11-23 15:49:01,578 INFO L481 AbstractCegarLoop]: Interpolant automaton has 86 states. [2018-11-23 15:49:01,578 INFO L276 IsEmpty]: Start isEmpty. Operand 67 states and 68 transitions. [2018-11-23 15:49:01,578 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 117 [2018-11-23 15:49:01,579 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:49:01,579 INFO L402 BasicCegarLoop]: trace histogram [18, 18, 17, 17, 17, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:49:01,579 INFO L423 AbstractCegarLoop]: === Iteration 10 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:49:01,579 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:49:01,579 INFO L82 PathProgramCache]: Analyzing trace with hash 1262227017, now seen corresponding path program 9 times [2018-11-23 15:49:01,579 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:49:01,579 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 11 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 11 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:49:01,590 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST2 [2018-11-23 15:49:02,044 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST2 issued 18 check-sat command(s) [2018-11-23 15:49:02,044 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:49:02,058 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:49:02,757 INFO L134 CoverageAnalysis]: Checked inductivity of 884 backedges. 0 proven. 442 refuted. 0 times theorem prover too weak. 442 trivial. 0 not checked. [2018-11-23 15:49:02,757 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:49:11,939 INFO L134 CoverageAnalysis]: Checked inductivity of 884 backedges. 0 proven. 731 refuted. 0 times theorem prover too weak. 153 trivial. 0 not checked. [2018-11-23 15:49:11,941 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:49:11,941 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [41, 57] total 96 [2018-11-23 15:49:11,941 INFO L459 AbstractCegarLoop]: Interpolant automaton has 96 states [2018-11-23 15:49:11,942 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 96 interpolants. [2018-11-23 15:49:11,942 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=347, Invalid=8773, Unknown=0, NotChecked=0, Total=9120 [2018-11-23 15:49:11,942 INFO L87 Difference]: Start difference. First operand 67 states and 68 transitions. Second operand 96 states. [2018-11-23 15:49:15,041 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:49:15,041 INFO L93 Difference]: Finished difference Result 79 states and 81 transitions. [2018-11-23 15:49:15,042 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 45 states. [2018-11-23 15:49:15,042 INFO L78 Accepts]: Start accepts. Automaton has 96 states. Word has length 116 [2018-11-23 15:49:15,042 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:49:15,043 INFO L225 Difference]: With dead ends: 79 [2018-11-23 15:49:15,043 INFO L226 Difference]: Without dead ends: 73 [2018-11-23 15:49:15,044 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 270 GetRequests, 134 SyntacticMatches, 3 SemanticMatches, 133 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 2377 ImplicationChecksByTransitivity, 7.3s TimeCoverageRelationStatistics Valid=1274, Invalid=16816, Unknown=0, NotChecked=0, Total=18090 [2018-11-23 15:49:15,045 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 73 states. [2018-11-23 15:49:15,049 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 73 to 73. [2018-11-23 15:49:15,049 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 73 states. [2018-11-23 15:49:15,049 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 73 states to 73 states and 74 transitions. [2018-11-23 15:49:15,050 INFO L78 Accepts]: Start accepts. Automaton has 73 states and 74 transitions. Word has length 116 [2018-11-23 15:49:15,050 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:49:15,050 INFO L480 AbstractCegarLoop]: Abstraction has 73 states and 74 transitions. [2018-11-23 15:49:15,050 INFO L481 AbstractCegarLoop]: Interpolant automaton has 96 states. [2018-11-23 15:49:15,050 INFO L276 IsEmpty]: Start isEmpty. Operand 73 states and 74 transitions. [2018-11-23 15:49:15,051 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 129 [2018-11-23 15:49:15,051 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:49:15,051 INFO L402 BasicCegarLoop]: trace histogram [20, 20, 19, 19, 19, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:49:15,052 INFO L423 AbstractCegarLoop]: === Iteration 11 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:49:15,052 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:49:15,052 INFO L82 PathProgramCache]: Analyzing trace with hash -1835458231, now seen corresponding path program 10 times [2018-11-23 15:49:15,052 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:49:15,052 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 12 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 12 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:49:15,064 INFO L101 rtionOrderModulation]: Changing assertion order to TERMS_WITH_SMALL_CONSTANTS_FIRST [2018-11-23 15:49:15,119 INFO L249 tOrderPrioritization]: Assert order TERMS_WITH_SMALL_CONSTANTS_FIRST issued 0 check-sat command(s) [2018-11-23 15:49:15,119 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:49:15,138 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:49:15,940 INFO L134 CoverageAnalysis]: Checked inductivity of 1102 backedges. 0 proven. 551 refuted. 0 times theorem prover too weak. 551 trivial. 0 not checked. [2018-11-23 15:49:15,940 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:49:26,673 INFO L134 CoverageAnalysis]: Checked inductivity of 1102 backedges. 0 proven. 912 refuted. 0 times theorem prover too weak. 190 trivial. 0 not checked. [2018-11-23 15:49:26,674 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:49:26,675 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [45, 63] total 106 [2018-11-23 15:49:26,675 INFO L459 AbstractCegarLoop]: Interpolant automaton has 106 states [2018-11-23 15:49:26,675 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 106 interpolants. [2018-11-23 15:49:26,676 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=385, Invalid=10745, Unknown=0, NotChecked=0, Total=11130 [2018-11-23 15:49:26,676 INFO L87 Difference]: Start difference. First operand 73 states and 74 transitions. Second operand 106 states. [2018-11-23 15:49:30,473 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:49:30,473 INFO L93 Difference]: Finished difference Result 85 states and 87 transitions. [2018-11-23 15:49:30,474 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 49 states. [2018-11-23 15:49:30,474 INFO L78 Accepts]: Start accepts. Automaton has 106 states. Word has length 128 [2018-11-23 15:49:30,474 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:49:30,475 INFO L225 Difference]: With dead ends: 85 [2018-11-23 15:49:30,475 INFO L226 Difference]: Without dead ends: 79 [2018-11-23 15:49:30,476 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 298 GetRequests, 148 SyntacticMatches, 3 SemanticMatches, 147 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 2900 ImplicationChecksByTransitivity, 8.4s TimeCoverageRelationStatistics Valid=1494, Invalid=20558, Unknown=0, NotChecked=0, Total=22052 [2018-11-23 15:49:30,476 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 79 states. [2018-11-23 15:49:30,479 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 79 to 79. [2018-11-23 15:49:30,480 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 79 states. [2018-11-23 15:49:30,480 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 79 states to 79 states and 80 transitions. [2018-11-23 15:49:30,480 INFO L78 Accepts]: Start accepts. Automaton has 79 states and 80 transitions. Word has length 128 [2018-11-23 15:49:30,481 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:49:30,481 INFO L480 AbstractCegarLoop]: Abstraction has 79 states and 80 transitions. [2018-11-23 15:49:30,481 INFO L481 AbstractCegarLoop]: Interpolant automaton has 106 states. [2018-11-23 15:49:30,481 INFO L276 IsEmpty]: Start isEmpty. Operand 79 states and 80 transitions. [2018-11-23 15:49:30,482 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 141 [2018-11-23 15:49:30,482 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:49:30,482 INFO L402 BasicCegarLoop]: trace histogram [22, 22, 21, 21, 21, 21, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:49:30,482 INFO L423 AbstractCegarLoop]: === Iteration 12 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:49:30,483 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:49:30,483 INFO L82 PathProgramCache]: Analyzing trace with hash 2110448713, now seen corresponding path program 11 times [2018-11-23 15:49:30,483 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:49:30,483 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 13 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 13 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:49:30,511 INFO L101 rtionOrderModulation]: Changing assertion order to INSIDE_LOOP_FIRST1 [2018-11-23 15:49:31,147 INFO L249 tOrderPrioritization]: Assert order INSIDE_LOOP_FIRST1 issued 22 check-sat command(s) [2018-11-23 15:49:31,147 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:49:31,171 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:49:32,109 INFO L134 CoverageAnalysis]: Checked inductivity of 1344 backedges. 0 proven. 672 refuted. 0 times theorem prover too weak. 672 trivial. 0 not checked. [2018-11-23 15:49:32,109 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:49:45,049 INFO L134 CoverageAnalysis]: Checked inductivity of 1344 backedges. 0 proven. 1113 refuted. 0 times theorem prover too weak. 231 trivial. 0 not checked. [2018-11-23 15:49:45,051 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:49:45,051 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [49, 69] total 116 [2018-11-23 15:49:45,051 INFO L459 AbstractCegarLoop]: Interpolant automaton has 116 states [2018-11-23 15:49:45,052 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 116 interpolants. [2018-11-23 15:49:45,052 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=423, Invalid=12917, Unknown=0, NotChecked=0, Total=13340 [2018-11-23 15:49:45,052 INFO L87 Difference]: Start difference. First operand 79 states and 80 transitions. Second operand 116 states. [2018-11-23 15:49:49,432 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:49:49,432 INFO L93 Difference]: Finished difference Result 91 states and 93 transitions. [2018-11-23 15:49:49,433 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 53 states. [2018-11-23 15:49:49,433 INFO L78 Accepts]: Start accepts. Automaton has 116 states. Word has length 140 [2018-11-23 15:49:49,433 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:49:49,434 INFO L225 Difference]: With dead ends: 91 [2018-11-23 15:49:49,434 INFO L226 Difference]: Without dead ends: 85 [2018-11-23 15:49:49,435 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 326 GetRequests, 162 SyntacticMatches, 3 SemanticMatches, 161 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 3475 ImplicationChecksByTransitivity, 9.9s TimeCoverageRelationStatistics Valid=1730, Invalid=24676, Unknown=0, NotChecked=0, Total=26406 [2018-11-23 15:49:49,435 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 85 states. [2018-11-23 15:49:49,439 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 85 to 85. [2018-11-23 15:49:49,440 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 85 states. [2018-11-23 15:49:49,440 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 85 states to 85 states and 86 transitions. [2018-11-23 15:49:49,440 INFO L78 Accepts]: Start accepts. Automaton has 85 states and 86 transitions. Word has length 140 [2018-11-23 15:49:49,441 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:49:49,441 INFO L480 AbstractCegarLoop]: Abstraction has 85 states and 86 transitions. [2018-11-23 15:49:49,441 INFO L481 AbstractCegarLoop]: Interpolant automaton has 116 states. [2018-11-23 15:49:49,441 INFO L276 IsEmpty]: Start isEmpty. Operand 85 states and 86 transitions. [2018-11-23 15:49:49,442 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 153 [2018-11-23 15:49:49,442 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:49:49,442 INFO L402 BasicCegarLoop]: trace histogram [24, 24, 23, 23, 23, 23, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:49:49,442 INFO L423 AbstractCegarLoop]: === Iteration 13 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:49:49,442 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:49:49,442 INFO L82 PathProgramCache]: Analyzing trace with hash -1482336439, now seen corresponding path program 12 times [2018-11-23 15:49:49,443 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:49:49,443 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 14 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 14 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:49:49,460 INFO L101 rtionOrderModulation]: Changing assertion order to MIX_INSIDE_OUTSIDE [2018-11-23 15:49:50,285 INFO L249 tOrderPrioritization]: Assert order MIX_INSIDE_OUTSIDE issued 24 check-sat command(s) [2018-11-23 15:49:50,285 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:49:50,317 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:49:51,469 INFO L134 CoverageAnalysis]: Checked inductivity of 1610 backedges. 0 proven. 805 refuted. 0 times theorem prover too weak. 805 trivial. 0 not checked. [2018-11-23 15:49:51,469 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:50:06,922 INFO L134 CoverageAnalysis]: Checked inductivity of 1610 backedges. 0 proven. 1334 refuted. 0 times theorem prover too weak. 276 trivial. 0 not checked. [2018-11-23 15:50:06,924 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:50:06,924 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [53, 75] total 126 [2018-11-23 15:50:06,924 INFO L459 AbstractCegarLoop]: Interpolant automaton has 126 states [2018-11-23 15:50:06,925 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 126 interpolants. [2018-11-23 15:50:06,925 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=461, Invalid=15289, Unknown=0, NotChecked=0, Total=15750 [2018-11-23 15:50:06,925 INFO L87 Difference]: Start difference. First operand 85 states and 86 transitions. Second operand 126 states. [2018-11-23 15:50:12,193 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:50:12,194 INFO L93 Difference]: Finished difference Result 97 states and 99 transitions. [2018-11-23 15:50:12,194 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 57 states. [2018-11-23 15:50:12,194 INFO L78 Accepts]: Start accepts. Automaton has 126 states. Word has length 152 [2018-11-23 15:50:12,194 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:50:12,195 INFO L225 Difference]: With dead ends: 97 [2018-11-23 15:50:12,195 INFO L226 Difference]: Without dead ends: 91 [2018-11-23 15:50:12,196 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 354 GetRequests, 176 SyntacticMatches, 3 SemanticMatches, 175 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 4102 ImplicationChecksByTransitivity, 11.9s TimeCoverageRelationStatistics Valid=1982, Invalid=29170, Unknown=0, NotChecked=0, Total=31152 [2018-11-23 15:50:12,196 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 91 states. [2018-11-23 15:50:12,200 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 91 to 91. [2018-11-23 15:50:12,201 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 91 states. [2018-11-23 15:50:12,201 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 91 states to 91 states and 92 transitions. [2018-11-23 15:50:12,201 INFO L78 Accepts]: Start accepts. Automaton has 91 states and 92 transitions. Word has length 152 [2018-11-23 15:50:12,202 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:50:12,202 INFO L480 AbstractCegarLoop]: Abstraction has 91 states and 92 transitions. [2018-11-23 15:50:12,202 INFO L481 AbstractCegarLoop]: Interpolant automaton has 126 states. [2018-11-23 15:50:12,202 INFO L276 IsEmpty]: Start isEmpty. Operand 91 states and 92 transitions. [2018-11-23 15:50:12,203 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 165 [2018-11-23 15:50:12,203 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:50:12,203 INFO L402 BasicCegarLoop]: trace histogram [26, 26, 25, 25, 25, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:50:12,203 INFO L423 AbstractCegarLoop]: === Iteration 14 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:50:12,203 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:50:12,203 INFO L82 PathProgramCache]: Analyzing trace with hash 1476164169, now seen corresponding path program 13 times [2018-11-23 15:50:12,204 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:50:12,205 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 15 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 15 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:50:12,216 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 15:50:12,284 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 15:50:12,310 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:50:13,562 INFO L134 CoverageAnalysis]: Checked inductivity of 1900 backedges. 0 proven. 950 refuted. 0 times theorem prover too weak. 950 trivial. 0 not checked. [2018-11-23 15:50:13,563 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:50:31,308 INFO L134 CoverageAnalysis]: Checked inductivity of 1900 backedges. 0 proven. 1575 refuted. 0 times theorem prover too weak. 325 trivial. 0 not checked. [2018-11-23 15:50:31,310 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:50:31,310 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [57, 81] total 136 [2018-11-23 15:50:31,311 INFO L459 AbstractCegarLoop]: Interpolant automaton has 136 states [2018-11-23 15:50:31,311 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 136 interpolants. [2018-11-23 15:50:31,311 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=499, Invalid=17861, Unknown=0, NotChecked=0, Total=18360 [2018-11-23 15:50:31,312 INFO L87 Difference]: Start difference. First operand 91 states and 92 transitions. Second operand 136 states. [2018-11-23 15:50:36,928 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:50:36,928 INFO L93 Difference]: Finished difference Result 103 states and 105 transitions. [2018-11-23 15:50:36,929 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 61 states. [2018-11-23 15:50:36,929 INFO L78 Accepts]: Start accepts. Automaton has 136 states. Word has length 164 [2018-11-23 15:50:36,929 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:50:36,930 INFO L225 Difference]: With dead ends: 103 [2018-11-23 15:50:36,930 INFO L226 Difference]: Without dead ends: 97 [2018-11-23 15:50:36,932 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 382 GetRequests, 190 SyntacticMatches, 3 SemanticMatches, 189 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 4781 ImplicationChecksByTransitivity, 13.4s TimeCoverageRelationStatistics Valid=2250, Invalid=34040, Unknown=0, NotChecked=0, Total=36290 [2018-11-23 15:50:36,932 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 97 states. [2018-11-23 15:50:36,935 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 97 to 97. [2018-11-23 15:50:36,935 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 97 states. [2018-11-23 15:50:36,936 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 97 states to 97 states and 98 transitions. [2018-11-23 15:50:36,936 INFO L78 Accepts]: Start accepts. Automaton has 97 states and 98 transitions. Word has length 164 [2018-11-23 15:50:36,936 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:50:36,936 INFO L480 AbstractCegarLoop]: Abstraction has 97 states and 98 transitions. [2018-11-23 15:50:36,937 INFO L481 AbstractCegarLoop]: Interpolant automaton has 136 states. [2018-11-23 15:50:36,937 INFO L276 IsEmpty]: Start isEmpty. Operand 97 states and 98 transitions. [2018-11-23 15:50:36,938 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 177 [2018-11-23 15:50:36,938 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:50:36,938 INFO L402 BasicCegarLoop]: trace histogram [28, 28, 27, 27, 27, 27, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:50:36,938 INFO L423 AbstractCegarLoop]: === Iteration 15 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:50:36,938 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:50:36,938 INFO L82 PathProgramCache]: Analyzing trace with hash -1012642487, now seen corresponding path program 14 times [2018-11-23 15:50:36,938 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:50:36,939 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 16 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 16 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:50:36,958 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST1 [2018-11-23 15:50:37,044 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 15:50:37,044 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:50:37,072 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:50:38,548 INFO L134 CoverageAnalysis]: Checked inductivity of 2214 backedges. 0 proven. 1107 refuted. 0 times theorem prover too weak. 1107 trivial. 0 not checked. [2018-11-23 15:50:38,548 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:50:59,402 INFO L134 CoverageAnalysis]: Checked inductivity of 2214 backedges. 0 proven. 1836 refuted. 0 times theorem prover too weak. 378 trivial. 0 not checked. [2018-11-23 15:50:59,405 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:50:59,405 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [61, 87] total 146 [2018-11-23 15:50:59,405 INFO L459 AbstractCegarLoop]: Interpolant automaton has 146 states [2018-11-23 15:50:59,406 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 146 interpolants. [2018-11-23 15:50:59,407 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=537, Invalid=20633, Unknown=0, NotChecked=0, Total=21170 [2018-11-23 15:50:59,407 INFO L87 Difference]: Start difference. First operand 97 states and 98 transitions. Second operand 146 states. [2018-11-23 15:51:05,825 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:51:05,825 INFO L93 Difference]: Finished difference Result 109 states and 111 transitions. [2018-11-23 15:51:05,826 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 65 states. [2018-11-23 15:51:05,826 INFO L78 Accepts]: Start accepts. Automaton has 146 states. Word has length 176 [2018-11-23 15:51:05,826 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:51:05,827 INFO L225 Difference]: With dead ends: 109 [2018-11-23 15:51:05,827 INFO L226 Difference]: Without dead ends: 103 [2018-11-23 15:51:05,829 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 410 GetRequests, 204 SyntacticMatches, 3 SemanticMatches, 203 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 5512 ImplicationChecksByTransitivity, 15.7s TimeCoverageRelationStatistics Valid=2534, Invalid=39286, Unknown=0, NotChecked=0, Total=41820 [2018-11-23 15:51:05,829 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 103 states. [2018-11-23 15:51:05,832 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 103 to 103. [2018-11-23 15:51:05,832 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 103 states. [2018-11-23 15:51:05,833 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 103 states to 103 states and 104 transitions. [2018-11-23 15:51:05,833 INFO L78 Accepts]: Start accepts. Automaton has 103 states and 104 transitions. Word has length 176 [2018-11-23 15:51:05,834 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:51:05,834 INFO L480 AbstractCegarLoop]: Abstraction has 103 states and 104 transitions. [2018-11-23 15:51:05,834 INFO L481 AbstractCegarLoop]: Interpolant automaton has 146 states. [2018-11-23 15:51:05,834 INFO L276 IsEmpty]: Start isEmpty. Operand 103 states and 104 transitions. [2018-11-23 15:51:05,834 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 189 [2018-11-23 15:51:05,834 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:51:05,834 INFO L402 BasicCegarLoop]: trace histogram [30, 30, 29, 29, 29, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:51:05,835 INFO L423 AbstractCegarLoop]: === Iteration 16 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:51:05,835 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:51:05,835 INFO L82 PathProgramCache]: Analyzing trace with hash 1282461769, now seen corresponding path program 15 times [2018-11-23 15:51:05,835 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:51:05,835 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 17 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 17 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:51:05,868 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST2 [2018-11-23 15:51:07,298 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST2 issued 30 check-sat command(s) [2018-11-23 15:51:07,299 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 15:51:07,337 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 15:51:08,962 INFO L134 CoverageAnalysis]: Checked inductivity of 2552 backedges. 0 proven. 1276 refuted. 0 times theorem prover too weak. 1276 trivial. 0 not checked. [2018-11-23 15:51:08,962 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 15:51:32,855 INFO L134 CoverageAnalysis]: Checked inductivity of 2552 backedges. 0 proven. 2117 refuted. 0 times theorem prover too weak. 435 trivial. 0 not checked. [2018-11-23 15:51:32,857 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 15:51:32,857 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [65, 93] total 156 [2018-11-23 15:51:32,857 INFO L459 AbstractCegarLoop]: Interpolant automaton has 156 states [2018-11-23 15:51:32,858 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 156 interpolants. [2018-11-23 15:51:32,858 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=575, Invalid=23605, Unknown=0, NotChecked=0, Total=24180 [2018-11-23 15:51:32,858 INFO L87 Difference]: Start difference. First operand 103 states and 104 transitions. Second operand 156 states. [2018-11-23 15:51:40,378 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 15:51:40,378 INFO L93 Difference]: Finished difference Result 115 states and 117 transitions. [2018-11-23 15:51:40,379 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 69 states. [2018-11-23 15:51:40,379 INFO L78 Accepts]: Start accepts. Automaton has 156 states. Word has length 188 [2018-11-23 15:51:40,380 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 15:51:40,380 INFO L225 Difference]: With dead ends: 115 [2018-11-23 15:51:40,380 INFO L226 Difference]: Without dead ends: 109 [2018-11-23 15:51:40,382 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 438 GetRequests, 218 SyntacticMatches, 3 SemanticMatches, 217 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 6295 ImplicationChecksByTransitivity, 17.9s TimeCoverageRelationStatistics Valid=2834, Invalid=44908, Unknown=0, NotChecked=0, Total=47742 [2018-11-23 15:51:40,383 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 109 states. [2018-11-23 15:51:40,386 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 109 to 109. [2018-11-23 15:51:40,386 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 109 states. [2018-11-23 15:51:40,386 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 109 states to 109 states and 110 transitions. [2018-11-23 15:51:40,387 INFO L78 Accepts]: Start accepts. Automaton has 109 states and 110 transitions. Word has length 188 [2018-11-23 15:51:40,387 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 15:51:40,387 INFO L480 AbstractCegarLoop]: Abstraction has 109 states and 110 transitions. [2018-11-23 15:51:40,387 INFO L481 AbstractCegarLoop]: Interpolant automaton has 156 states. [2018-11-23 15:51:40,387 INFO L276 IsEmpty]: Start isEmpty. Operand 109 states and 110 transitions. [2018-11-23 15:51:40,388 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 201 [2018-11-23 15:51:40,388 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 15:51:40,388 INFO L402 BasicCegarLoop]: trace histogram [32, 32, 31, 31, 31, 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 15:51:40,388 INFO L423 AbstractCegarLoop]: === Iteration 17 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 15:51:40,388 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 15:51:40,388 INFO L82 PathProgramCache]: Analyzing trace with hash -1053424823, now seen corresponding path program 16 times [2018-11-23 15:51:40,388 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 15:51:40,388 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_031b1ec5-6c9e-4829-9c69-8224450d9c42/bin-2019/uautomizer/cvc4nyu Starting monitored process 18 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 18 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 15:51:40,403 INFO L101 rtionOrderModulation]: Changing assertion order to TERMS_WITH_SMALL_CONSTANTS_FIRST [2018-11-23 15:51:40,608 INFO L249 tOrderPrioritization]: Assert order TERMS_WITH_SMALL_CONSTANTS_FIRST issued 0 check-sat command(s) [2018-11-23 15:51:40,608 INFO L250 tOrderPrioritization]: Conjunction of SSA is sat [2018-11-23 15:51:40,760 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 15:51:40,835 INFO L469 BasicCegarLoop]: Counterexample might be feasible ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); [?] assume true; [?] RET #30#return; [?] CALL call #t~ret3 := main(); [?] ~n~0 := #t~nondet1;havoc #t~nondet1; VAL [main_~n~0=(_ bv32 32)] [?] assume !~bvslt32(~n~0, 1bv32); VAL [main_~n~0=(_ bv32 32)] [?] CALL call #t~ret2 := hanoi(~n~0); VAL [|hanoi_#in~n|=(_ bv32 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv32 32), |hanoi_#in~n|=(_ bv32 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv32 32), |hanoi_#in~n|=(_ bv32 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv31 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv31 32), |hanoi_#in~n|=(_ bv31 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv31 32), |hanoi_#in~n|=(_ bv31 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv30 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv30 32), |hanoi_#in~n|=(_ bv30 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv30 32), |hanoi_#in~n|=(_ bv30 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv29 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv29 32), |hanoi_#in~n|=(_ bv29 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv29 32), |hanoi_#in~n|=(_ bv29 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv28 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv28 32), |hanoi_#in~n|=(_ bv28 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv28 32), |hanoi_#in~n|=(_ bv28 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv27 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv27 32), |hanoi_#in~n|=(_ bv27 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv27 32), |hanoi_#in~n|=(_ bv27 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv26 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv26 32), |hanoi_#in~n|=(_ bv26 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv26 32), |hanoi_#in~n|=(_ bv26 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv25 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv25 32), |hanoi_#in~n|=(_ bv25 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv25 32), |hanoi_#in~n|=(_ bv25 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv24 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv24 32), |hanoi_#in~n|=(_ bv24 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv24 32), |hanoi_#in~n|=(_ bv24 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv23 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv23 32), |hanoi_#in~n|=(_ bv23 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv23 32), |hanoi_#in~n|=(_ bv23 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv22 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv22 32), |hanoi_#in~n|=(_ bv22 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv22 32), |hanoi_#in~n|=(_ bv22 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv21 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv21 32), |hanoi_#in~n|=(_ bv21 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv21 32), |hanoi_#in~n|=(_ bv21 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv20 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv20 32), |hanoi_#in~n|=(_ bv20 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv20 32), |hanoi_#in~n|=(_ bv20 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv19 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv19 32), |hanoi_#in~n|=(_ bv19 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv19 32), |hanoi_#in~n|=(_ bv19 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv18 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv18 32), |hanoi_#in~n|=(_ bv18 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv18 32), |hanoi_#in~n|=(_ bv18 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv17 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv17 32), |hanoi_#in~n|=(_ bv17 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv17 32), |hanoi_#in~n|=(_ bv17 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv16 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv16 32), |hanoi_#in~n|=(_ bv16 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv16 32), |hanoi_#in~n|=(_ bv16 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv15 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv15 32), |hanoi_#in~n|=(_ bv15 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv15 32), |hanoi_#in~n|=(_ bv15 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv14 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv14 32), |hanoi_#in~n|=(_ bv14 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv14 32), |hanoi_#in~n|=(_ bv14 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv13 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv13 32), |hanoi_#in~n|=(_ bv13 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv13 32), |hanoi_#in~n|=(_ bv13 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv12 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv12 32), |hanoi_#in~n|=(_ bv12 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv12 32), |hanoi_#in~n|=(_ bv12 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv11 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv11 32), |hanoi_#in~n|=(_ bv11 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv11 32), |hanoi_#in~n|=(_ bv11 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv10 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv10 32), |hanoi_#in~n|=(_ bv10 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv10 32), |hanoi_#in~n|=(_ bv10 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv9 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv9 32), |hanoi_#in~n|=(_ bv9 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv9 32), |hanoi_#in~n|=(_ bv9 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv8 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv8 32), |hanoi_#in~n|=(_ bv8 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv8 32), |hanoi_#in~n|=(_ bv8 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv7 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv7 32), |hanoi_#in~n|=(_ bv7 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv7 32), |hanoi_#in~n|=(_ bv7 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv6 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv6 32), |hanoi_#in~n|=(_ bv6 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv6 32), |hanoi_#in~n|=(_ bv6 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv5 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv5 32), |hanoi_#in~n|=(_ bv5 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv5 32), |hanoi_#in~n|=(_ bv5 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv4 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv4 32), |hanoi_#in~n|=(_ bv4 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv4 32), |hanoi_#in~n|=(_ bv4 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv3 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv3 32), |hanoi_#in~n|=(_ bv3 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv3 32), |hanoi_#in~n|=(_ bv3 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv2 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv2 32), |hanoi_#in~n|=(_ bv2 32)] [?] assume !(1bv32 == ~n); VAL [hanoi_~n=(_ bv2 32), |hanoi_#in~n|=(_ bv2 32)] [?] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [|hanoi_#in~n|=(_ bv1 32)] [?] ~n := #in~n; VAL [hanoi_~n=(_ bv1 32), |hanoi_#in~n|=(_ bv1 32)] [?] assume 1bv32 == ~n;#res := 1bv32; VAL [hanoi_~n=(_ bv1 32), |hanoi_#in~n|=(_ bv1 32), |hanoi_#res|=(_ bv1 32)] [?] assume true; VAL [hanoi_~n=(_ bv1 32), |hanoi_#in~n|=(_ bv1 32), |hanoi_#res|=(_ bv1 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv2 32), |hanoi_#in~n|=(_ bv2 32), |hanoi_#t~ret0|=(_ bv1 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv2 32), |hanoi_#in~n|=(_ bv2 32), |hanoi_#res|=(_ bv3 32)] [?] assume true; VAL [hanoi_~n=(_ bv2 32), |hanoi_#in~n|=(_ bv2 32), |hanoi_#res|=(_ bv3 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv3 32), |hanoi_#in~n|=(_ bv3 32), |hanoi_#t~ret0|=(_ bv3 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv3 32), |hanoi_#in~n|=(_ bv3 32), |hanoi_#res|=(_ bv7 32)] [?] assume true; VAL [hanoi_~n=(_ bv3 32), |hanoi_#in~n|=(_ bv3 32), |hanoi_#res|=(_ bv7 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv4 32), |hanoi_#in~n|=(_ bv4 32), |hanoi_#t~ret0|=(_ bv7 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv4 32), |hanoi_#in~n|=(_ bv4 32), |hanoi_#res|=(_ bv15 32)] [?] assume true; VAL [hanoi_~n=(_ bv4 32), |hanoi_#in~n|=(_ bv4 32), |hanoi_#res|=(_ bv15 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv5 32), |hanoi_#in~n|=(_ bv5 32), |hanoi_#t~ret0|=(_ bv15 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv5 32), |hanoi_#in~n|=(_ bv5 32), |hanoi_#res|=(_ bv31 32)] [?] assume true; VAL [hanoi_~n=(_ bv5 32), |hanoi_#in~n|=(_ bv5 32), |hanoi_#res|=(_ bv31 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv6 32), |hanoi_#in~n|=(_ bv6 32), |hanoi_#t~ret0|=(_ bv31 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv6 32), |hanoi_#in~n|=(_ bv6 32), |hanoi_#res|=(_ bv63 32)] [?] assume true; VAL [hanoi_~n=(_ bv6 32), |hanoi_#in~n|=(_ bv6 32), |hanoi_#res|=(_ bv63 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv7 32), |hanoi_#in~n|=(_ bv7 32), |hanoi_#t~ret0|=(_ bv63 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv7 32), |hanoi_#in~n|=(_ bv7 32), |hanoi_#res|=(_ bv127 32)] [?] assume true; VAL [hanoi_~n=(_ bv7 32), |hanoi_#in~n|=(_ bv7 32), |hanoi_#res|=(_ bv127 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv8 32), |hanoi_#in~n|=(_ bv8 32), |hanoi_#t~ret0|=(_ bv127 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv8 32), |hanoi_#in~n|=(_ bv8 32), |hanoi_#res|=(_ bv255 32)] [?] assume true; VAL [hanoi_~n=(_ bv8 32), |hanoi_#in~n|=(_ bv8 32), |hanoi_#res|=(_ bv255 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv9 32), |hanoi_#in~n|=(_ bv9 32), |hanoi_#t~ret0|=(_ bv255 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv9 32), |hanoi_#in~n|=(_ bv9 32), |hanoi_#res|=(_ bv511 32)] [?] assume true; VAL [hanoi_~n=(_ bv9 32), |hanoi_#in~n|=(_ bv9 32), |hanoi_#res|=(_ bv511 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv10 32), |hanoi_#in~n|=(_ bv10 32), |hanoi_#t~ret0|=(_ bv511 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv10 32), |hanoi_#in~n|=(_ bv10 32), |hanoi_#res|=(_ bv1023 32)] [?] assume true; VAL [hanoi_~n=(_ bv10 32), |hanoi_#in~n|=(_ bv10 32), |hanoi_#res|=(_ bv1023 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv11 32), |hanoi_#in~n|=(_ bv11 32), |hanoi_#t~ret0|=(_ bv1023 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv11 32), |hanoi_#in~n|=(_ bv11 32), |hanoi_#res|=(_ bv2047 32)] [?] assume true; VAL [hanoi_~n=(_ bv11 32), |hanoi_#in~n|=(_ bv11 32), |hanoi_#res|=(_ bv2047 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv12 32), |hanoi_#in~n|=(_ bv12 32), |hanoi_#t~ret0|=(_ bv2047 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv12 32), |hanoi_#in~n|=(_ bv12 32), |hanoi_#res|=(_ bv4095 32)] [?] assume true; VAL [hanoi_~n=(_ bv12 32), |hanoi_#in~n|=(_ bv12 32), |hanoi_#res|=(_ bv4095 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv13 32), |hanoi_#in~n|=(_ bv13 32), |hanoi_#t~ret0|=(_ bv4095 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv13 32), |hanoi_#in~n|=(_ bv13 32), |hanoi_#res|=(_ bv8191 32)] [?] assume true; VAL [hanoi_~n=(_ bv13 32), |hanoi_#in~n|=(_ bv13 32), |hanoi_#res|=(_ bv8191 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv14 32), |hanoi_#in~n|=(_ bv14 32), |hanoi_#t~ret0|=(_ bv8191 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv14 32), |hanoi_#in~n|=(_ bv14 32), |hanoi_#res|=(_ bv16383 32)] [?] assume true; VAL [hanoi_~n=(_ bv14 32), |hanoi_#in~n|=(_ bv14 32), |hanoi_#res|=(_ bv16383 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv15 32), |hanoi_#in~n|=(_ bv15 32), |hanoi_#t~ret0|=(_ bv16383 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv15 32), |hanoi_#in~n|=(_ bv15 32), |hanoi_#res|=(_ bv32767 32)] [?] assume true; VAL [hanoi_~n=(_ bv15 32), |hanoi_#in~n|=(_ bv15 32), |hanoi_#res|=(_ bv32767 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv16 32), |hanoi_#in~n|=(_ bv16 32), |hanoi_#t~ret0|=(_ bv32767 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv16 32), |hanoi_#in~n|=(_ bv16 32), |hanoi_#res|=(_ bv65535 32)] [?] assume true; VAL [hanoi_~n=(_ bv16 32), |hanoi_#in~n|=(_ bv16 32), |hanoi_#res|=(_ bv65535 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv17 32), |hanoi_#in~n|=(_ bv17 32), |hanoi_#t~ret0|=(_ bv65535 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv17 32), |hanoi_#in~n|=(_ bv17 32), |hanoi_#res|=(_ bv131071 32)] [?] assume true; VAL [hanoi_~n=(_ bv17 32), |hanoi_#in~n|=(_ bv17 32), |hanoi_#res|=(_ bv131071 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv18 32), |hanoi_#in~n|=(_ bv18 32), |hanoi_#t~ret0|=(_ bv131071 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv18 32), |hanoi_#in~n|=(_ bv18 32), |hanoi_#res|=(_ bv262143 32)] [?] assume true; VAL [hanoi_~n=(_ bv18 32), |hanoi_#in~n|=(_ bv18 32), |hanoi_#res|=(_ bv262143 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv19 32), |hanoi_#in~n|=(_ bv19 32), |hanoi_#t~ret0|=(_ bv262143 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv19 32), |hanoi_#in~n|=(_ bv19 32), |hanoi_#res|=(_ bv524287 32)] [?] assume true; VAL [hanoi_~n=(_ bv19 32), |hanoi_#in~n|=(_ bv19 32), |hanoi_#res|=(_ bv524287 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv20 32), |hanoi_#in~n|=(_ bv20 32), |hanoi_#t~ret0|=(_ bv524287 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv20 32), |hanoi_#in~n|=(_ bv20 32), |hanoi_#res|=(_ bv1048575 32)] [?] assume true; VAL [hanoi_~n=(_ bv20 32), |hanoi_#in~n|=(_ bv20 32), |hanoi_#res|=(_ bv1048575 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv21 32), |hanoi_#in~n|=(_ bv21 32), |hanoi_#t~ret0|=(_ bv1048575 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv21 32), |hanoi_#in~n|=(_ bv21 32), |hanoi_#res|=(_ bv2097151 32)] [?] assume true; VAL [hanoi_~n=(_ bv21 32), |hanoi_#in~n|=(_ bv21 32), |hanoi_#res|=(_ bv2097151 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv22 32), |hanoi_#in~n|=(_ bv22 32), |hanoi_#t~ret0|=(_ bv2097151 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv22 32), |hanoi_#in~n|=(_ bv22 32), |hanoi_#res|=(_ bv4194303 32)] [?] assume true; VAL [hanoi_~n=(_ bv22 32), |hanoi_#in~n|=(_ bv22 32), |hanoi_#res|=(_ bv4194303 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv23 32), |hanoi_#in~n|=(_ bv23 32), |hanoi_#t~ret0|=(_ bv4194303 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv23 32), |hanoi_#in~n|=(_ bv23 32), |hanoi_#res|=(_ bv8388607 32)] [?] assume true; VAL [hanoi_~n=(_ bv23 32), |hanoi_#in~n|=(_ bv23 32), |hanoi_#res|=(_ bv8388607 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv24 32), |hanoi_#in~n|=(_ bv24 32), |hanoi_#t~ret0|=(_ bv8388607 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv24 32), |hanoi_#in~n|=(_ bv24 32), |hanoi_#res|=(_ bv16777215 32)] [?] assume true; VAL [hanoi_~n=(_ bv24 32), |hanoi_#in~n|=(_ bv24 32), |hanoi_#res|=(_ bv16777215 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv25 32), |hanoi_#in~n|=(_ bv25 32), |hanoi_#t~ret0|=(_ bv16777215 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv25 32), |hanoi_#in~n|=(_ bv25 32), |hanoi_#res|=(_ bv33554431 32)] [?] assume true; VAL [hanoi_~n=(_ bv25 32), |hanoi_#in~n|=(_ bv25 32), |hanoi_#res|=(_ bv33554431 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv26 32), |hanoi_#in~n|=(_ bv26 32), |hanoi_#t~ret0|=(_ bv33554431 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv26 32), |hanoi_#in~n|=(_ bv26 32), |hanoi_#res|=(_ bv67108863 32)] [?] assume true; VAL [hanoi_~n=(_ bv26 32), |hanoi_#in~n|=(_ bv26 32), |hanoi_#res|=(_ bv67108863 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv27 32), |hanoi_#in~n|=(_ bv27 32), |hanoi_#t~ret0|=(_ bv67108863 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv27 32), |hanoi_#in~n|=(_ bv27 32), |hanoi_#res|=(_ bv134217727 32)] [?] assume true; VAL [hanoi_~n=(_ bv27 32), |hanoi_#in~n|=(_ bv27 32), |hanoi_#res|=(_ bv134217727 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv28 32), |hanoi_#in~n|=(_ bv28 32), |hanoi_#t~ret0|=(_ bv134217727 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv28 32), |hanoi_#in~n|=(_ bv28 32), |hanoi_#res|=(_ bv268435455 32)] [?] assume true; VAL [hanoi_~n=(_ bv28 32), |hanoi_#in~n|=(_ bv28 32), |hanoi_#res|=(_ bv268435455 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv29 32), |hanoi_#in~n|=(_ bv29 32), |hanoi_#t~ret0|=(_ bv268435455 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv29 32), |hanoi_#in~n|=(_ bv29 32), |hanoi_#res|=(_ bv536870911 32)] [?] assume true; VAL [hanoi_~n=(_ bv29 32), |hanoi_#in~n|=(_ bv29 32), |hanoi_#res|=(_ bv536870911 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv30 32), |hanoi_#in~n|=(_ bv30 32), |hanoi_#t~ret0|=(_ bv536870911 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv30 32), |hanoi_#in~n|=(_ bv30 32), |hanoi_#res|=(_ bv1073741823 32)] [?] assume true; VAL [hanoi_~n=(_ bv30 32), |hanoi_#in~n|=(_ bv30 32), |hanoi_#res|=(_ bv1073741823 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv31 32), |hanoi_#in~n|=(_ bv31 32), |hanoi_#t~ret0|=(_ bv1073741823 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv31 32), |hanoi_#in~n|=(_ bv31 32), |hanoi_#res|=(_ bv2147483647 32)] [?] assume true; VAL [hanoi_~n=(_ bv31 32), |hanoi_#in~n|=(_ bv31 32), |hanoi_#res|=(_ bv2147483647 32)] [?] RET #28#return; VAL [hanoi_~n=(_ bv32 32), |hanoi_#in~n|=(_ bv32 32), |hanoi_#t~ret0|=(_ bv2147483647 32)] [?] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0));havoc #t~ret0; VAL [hanoi_~n=(_ bv32 32), |hanoi_#in~n|=(_ bv32 32), |hanoi_#res|=(_ bv4294967295 32)] [?] assume true; VAL [hanoi_~n=(_ bv32 32), |hanoi_#in~n|=(_ bv32 32), |hanoi_#res|=(_ bv4294967295 32)] [?] RET #34#return; VAL [main_~n~0=(_ bv32 32), |main_#t~ret2|=(_ bv4294967295 32)] [?] ~result~0 := #t~ret2;havoc #t~ret2; VAL [main_~n~0=(_ bv32 32), main_~result~0=(_ bv4294967295 32)] [?] assume !(~bvugt32(~bvadd32(1bv32, ~result~0), 0bv32) && ~bvadd32(1bv32, ~result~0) == ~bvshl32(1bv32, ~n~0)); VAL [main_~n~0=(_ bv32 32), main_~result~0=(_ bv4294967295 32)] [?] assume !false; VAL [main_~n~0=(_ bv32 32), main_~result~0=(_ bv4294967295 32)] [?] CALL call ULTIMATE.init(); [?] ensures true; [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=32bv32] [L26-L28] assume !~bvslt32(~n~0, 1bv32); VAL [~n~0=32bv32] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=32bv32] [L16-L21] ~n := #in~n; VAL [#in~n=32bv32, ~n=32bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=32bv32, ~n=32bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32] [L16-L21] ~n := #in~n; VAL [#in~n=31bv32, ~n=31bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=31bv32, ~n=31bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32] [L16-L21] ~n := #in~n; VAL [#in~n=30bv32, ~n=30bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=30bv32, ~n=30bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32] [L16-L21] ~n := #in~n; VAL [#in~n=29bv32, ~n=29bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=29bv32, ~n=29bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32] [L16-L21] ~n := #in~n; VAL [#in~n=28bv32, ~n=28bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=28bv32, ~n=28bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32] [L16-L21] ~n := #in~n; VAL [#in~n=27bv32, ~n=27bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=27bv32, ~n=27bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32] [L16-L21] ~n := #in~n; VAL [#in~n=26bv32, ~n=26bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=26bv32, ~n=26bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32] [L16-L21] ~n := #in~n; VAL [#in~n=25bv32, ~n=25bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=25bv32, ~n=25bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32] [L16-L21] ~n := #in~n; VAL [#in~n=24bv32, ~n=24bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=24bv32, ~n=24bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32] [L16-L21] ~n := #in~n; VAL [#in~n=23bv32, ~n=23bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=23bv32, ~n=23bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32] [L16-L21] ~n := #in~n; VAL [#in~n=22bv32, ~n=22bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=22bv32, ~n=22bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32] [L16-L21] ~n := #in~n; VAL [#in~n=21bv32, ~n=21bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=21bv32, ~n=21bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32] [L16-L21] ~n := #in~n; VAL [#in~n=20bv32, ~n=20bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=20bv32, ~n=20bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32] [L16-L21] ~n := #in~n; VAL [#in~n=19bv32, ~n=19bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=19bv32, ~n=19bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32] [L16-L21] ~n := #in~n; VAL [#in~n=18bv32, ~n=18bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=18bv32, ~n=18bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32] [L16-L21] ~n := #in~n; VAL [#in~n=17bv32, ~n=17bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=17bv32, ~n=17bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32] [L16-L21] ~n := #in~n; VAL [#in~n=16bv32, ~n=16bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=16bv32, ~n=16bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32] [L16-L21] ~n := #in~n; VAL [#in~n=15bv32, ~n=15bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=15bv32, ~n=15bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32] [L16-L21] ~n := #in~n; VAL [#in~n=14bv32, ~n=14bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=14bv32, ~n=14bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32] [L16-L21] ~n := #in~n; VAL [#in~n=13bv32, ~n=13bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=13bv32, ~n=13bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32] [L16-L21] ~n := #in~n; VAL [#in~n=12bv32, ~n=12bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=12bv32, ~n=12bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32] [L16-L21] ~n := #in~n; VAL [#in~n=11bv32, ~n=11bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=11bv32, ~n=11bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32] [L16-L21] ~n := #in~n; VAL [#in~n=10bv32, ~n=10bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=10bv32, ~n=10bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32] [L16-L21] ~n := #in~n; VAL [#in~n=9bv32, ~n=9bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=9bv32, ~n=9bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32] [L16-L21] ~n := #in~n; VAL [#in~n=8bv32, ~n=8bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=8bv32, ~n=8bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32] [L16-L21] ~n := #in~n; VAL [#in~n=7bv32, ~n=7bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=7bv32, ~n=7bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32] [L16-L21] ~n := #in~n; VAL [#in~n=6bv32, ~n=6bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=6bv32, ~n=6bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32] [L16-L21] ~n := #in~n; VAL [#in~n=5bv32, ~n=5bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=5bv32, ~n=5bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32] [L16-L21] ~n := #in~n; VAL [#in~n=4bv32, ~n=4bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=4bv32, ~n=4bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32] [L16-L21] ~n := #in~n; VAL [#in~n=3bv32, ~n=3bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=3bv32, ~n=3bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32] [L16-L21] ~n := #in~n; VAL [#in~n=2bv32, ~n=2bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=2bv32, ~n=2bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=1bv32] [L16-L21] ~n := #in~n; VAL [#in~n=1bv32, ~n=1bv32] [L17-L19] assume 1bv32 == ~n; [L18] #res := 1bv32; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L16-L21] ensures true; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32, #t~ret0=1bv32, ~n=2bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L16-L21] ensures true; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32, #t~ret0=3bv32, ~n=3bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L16-L21] ensures true; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32, #t~ret0=7bv32, ~n=4bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L16-L21] ensures true; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32, #t~ret0=15bv32, ~n=5bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L16-L21] ensures true; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32, #t~ret0=31bv32, ~n=6bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L16-L21] ensures true; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32, #t~ret0=63bv32, ~n=7bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L16-L21] ensures true; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32, #t~ret0=127bv32, ~n=8bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L16-L21] ensures true; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32, #t~ret0=255bv32, ~n=9bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L16-L21] ensures true; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32, #t~ret0=511bv32, ~n=10bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L16-L21] ensures true; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32, #t~ret0=1023bv32, ~n=11bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L16-L21] ensures true; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32, #t~ret0=2047bv32, ~n=12bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L16-L21] ensures true; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32, #t~ret0=4095bv32, ~n=13bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L16-L21] ensures true; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32, #t~ret0=8191bv32, ~n=14bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L16-L21] ensures true; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32, #t~ret0=16383bv32, ~n=15bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L16-L21] ensures true; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32, #t~ret0=32767bv32, ~n=16bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L16-L21] ensures true; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32, #t~ret0=65535bv32, ~n=17bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L16-L21] ensures true; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32, #t~ret0=131071bv32, ~n=18bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L16-L21] ensures true; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32, #t~ret0=262143bv32, ~n=19bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L16-L21] ensures true; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32, #t~ret0=524287bv32, ~n=20bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L16-L21] ensures true; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32, #t~ret0=1048575bv32, ~n=21bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L16-L21] ensures true; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32, #t~ret0=2097151bv32, ~n=22bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L16-L21] ensures true; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32, #t~ret0=4194303bv32, ~n=23bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L16-L21] ensures true; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32, #t~ret0=8388607bv32, ~n=24bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L16-L21] ensures true; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32, #t~ret0=16777215bv32, ~n=25bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L16-L21] ensures true; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32, #t~ret0=33554431bv32, ~n=26bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L16-L21] ensures true; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32, #t~ret0=67108863bv32, ~n=27bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L16-L21] ensures true; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32, #t~ret0=134217727bv32, ~n=28bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L16-L21] ensures true; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32, #t~ret0=268435455bv32, ~n=29bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L16-L21] ensures true; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32, #t~ret0=536870911bv32, ~n=30bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L16-L21] ensures true; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32, #t~ret0=1073741823bv32, ~n=31bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L16-L21] ensures true; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=32bv32, #t~ret0=2147483647bv32, ~n=32bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L16-L21] ensures true; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=4294967295bv32, ~n~0=32bv32] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L31-L35] assume !(~bvugt32(~bvadd32(1bv32, ~result~0), 0bv32) && ~bvadd32(1bv32, ~result~0) == ~bvshl32(1bv32, ~n~0)); VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L34] assert false; VAL [~n~0=32bv32, ~result~0=4294967295bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); [?] ensures true; [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=32bv32] [L26-L28] assume !~bvslt32(~n~0, 1bv32); VAL [~n~0=32bv32] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=32bv32] [L16-L21] ~n := #in~n; VAL [#in~n=32bv32, ~n=32bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=32bv32, ~n=32bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32] [L16-L21] ~n := #in~n; VAL [#in~n=31bv32, ~n=31bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=31bv32, ~n=31bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32] [L16-L21] ~n := #in~n; VAL [#in~n=30bv32, ~n=30bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=30bv32, ~n=30bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32] [L16-L21] ~n := #in~n; VAL [#in~n=29bv32, ~n=29bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=29bv32, ~n=29bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32] [L16-L21] ~n := #in~n; VAL [#in~n=28bv32, ~n=28bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=28bv32, ~n=28bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32] [L16-L21] ~n := #in~n; VAL [#in~n=27bv32, ~n=27bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=27bv32, ~n=27bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32] [L16-L21] ~n := #in~n; VAL [#in~n=26bv32, ~n=26bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=26bv32, ~n=26bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32] [L16-L21] ~n := #in~n; VAL [#in~n=25bv32, ~n=25bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=25bv32, ~n=25bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32] [L16-L21] ~n := #in~n; VAL [#in~n=24bv32, ~n=24bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=24bv32, ~n=24bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32] [L16-L21] ~n := #in~n; VAL [#in~n=23bv32, ~n=23bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=23bv32, ~n=23bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32] [L16-L21] ~n := #in~n; VAL [#in~n=22bv32, ~n=22bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=22bv32, ~n=22bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32] [L16-L21] ~n := #in~n; VAL [#in~n=21bv32, ~n=21bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=21bv32, ~n=21bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32] [L16-L21] ~n := #in~n; VAL [#in~n=20bv32, ~n=20bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=20bv32, ~n=20bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32] [L16-L21] ~n := #in~n; VAL [#in~n=19bv32, ~n=19bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=19bv32, ~n=19bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32] [L16-L21] ~n := #in~n; VAL [#in~n=18bv32, ~n=18bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=18bv32, ~n=18bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32] [L16-L21] ~n := #in~n; VAL [#in~n=17bv32, ~n=17bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=17bv32, ~n=17bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32] [L16-L21] ~n := #in~n; VAL [#in~n=16bv32, ~n=16bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=16bv32, ~n=16bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32] [L16-L21] ~n := #in~n; VAL [#in~n=15bv32, ~n=15bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=15bv32, ~n=15bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32] [L16-L21] ~n := #in~n; VAL [#in~n=14bv32, ~n=14bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=14bv32, ~n=14bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32] [L16-L21] ~n := #in~n; VAL [#in~n=13bv32, ~n=13bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=13bv32, ~n=13bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32] [L16-L21] ~n := #in~n; VAL [#in~n=12bv32, ~n=12bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=12bv32, ~n=12bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32] [L16-L21] ~n := #in~n; VAL [#in~n=11bv32, ~n=11bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=11bv32, ~n=11bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32] [L16-L21] ~n := #in~n; VAL [#in~n=10bv32, ~n=10bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=10bv32, ~n=10bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32] [L16-L21] ~n := #in~n; VAL [#in~n=9bv32, ~n=9bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=9bv32, ~n=9bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32] [L16-L21] ~n := #in~n; VAL [#in~n=8bv32, ~n=8bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=8bv32, ~n=8bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32] [L16-L21] ~n := #in~n; VAL [#in~n=7bv32, ~n=7bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=7bv32, ~n=7bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32] [L16-L21] ~n := #in~n; VAL [#in~n=6bv32, ~n=6bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=6bv32, ~n=6bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32] [L16-L21] ~n := #in~n; VAL [#in~n=5bv32, ~n=5bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=5bv32, ~n=5bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32] [L16-L21] ~n := #in~n; VAL [#in~n=4bv32, ~n=4bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=4bv32, ~n=4bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32] [L16-L21] ~n := #in~n; VAL [#in~n=3bv32, ~n=3bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=3bv32, ~n=3bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32] [L16-L21] ~n := #in~n; VAL [#in~n=2bv32, ~n=2bv32] [L17-L19] assume !(1bv32 == ~n); VAL [#in~n=2bv32, ~n=2bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=1bv32] [L16-L21] ~n := #in~n; VAL [#in~n=1bv32, ~n=1bv32] [L17-L19] assume 1bv32 == ~n; [L18] #res := 1bv32; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L16-L21] ensures true; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32, #t~ret0=1bv32, ~n=2bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L16-L21] ensures true; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32, #t~ret0=3bv32, ~n=3bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L16-L21] ensures true; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32, #t~ret0=7bv32, ~n=4bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L16-L21] ensures true; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32, #t~ret0=15bv32, ~n=5bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L16-L21] ensures true; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32, #t~ret0=31bv32, ~n=6bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L16-L21] ensures true; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32, #t~ret0=63bv32, ~n=7bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L16-L21] ensures true; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32, #t~ret0=127bv32, ~n=8bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L16-L21] ensures true; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32, #t~ret0=255bv32, ~n=9bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L16-L21] ensures true; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32, #t~ret0=511bv32, ~n=10bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L16-L21] ensures true; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32, #t~ret0=1023bv32, ~n=11bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L16-L21] ensures true; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32, #t~ret0=2047bv32, ~n=12bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L16-L21] ensures true; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32, #t~ret0=4095bv32, ~n=13bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L16-L21] ensures true; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32, #t~ret0=8191bv32, ~n=14bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L16-L21] ensures true; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32, #t~ret0=16383bv32, ~n=15bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L16-L21] ensures true; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32, #t~ret0=32767bv32, ~n=16bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L16-L21] ensures true; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32, #t~ret0=65535bv32, ~n=17bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L16-L21] ensures true; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32, #t~ret0=131071bv32, ~n=18bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L16-L21] ensures true; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32, #t~ret0=262143bv32, ~n=19bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L16-L21] ensures true; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32, #t~ret0=524287bv32, ~n=20bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L16-L21] ensures true; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32, #t~ret0=1048575bv32, ~n=21bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L16-L21] ensures true; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32, #t~ret0=2097151bv32, ~n=22bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L16-L21] ensures true; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32, #t~ret0=4194303bv32, ~n=23bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L16-L21] ensures true; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32, #t~ret0=8388607bv32, ~n=24bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L16-L21] ensures true; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32, #t~ret0=16777215bv32, ~n=25bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L16-L21] ensures true; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32, #t~ret0=33554431bv32, ~n=26bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L16-L21] ensures true; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32, #t~ret0=67108863bv32, ~n=27bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L16-L21] ensures true; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32, #t~ret0=134217727bv32, ~n=28bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L16-L21] ensures true; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32, #t~ret0=268435455bv32, ~n=29bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L16-L21] ensures true; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32, #t~ret0=536870911bv32, ~n=30bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L16-L21] ensures true; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32, #t~ret0=1073741823bv32, ~n=31bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L16-L21] ensures true; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=32bv32, #t~ret0=2147483647bv32, ~n=32bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L16-L21] ensures true; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=4294967295bv32, ~n~0=32bv32] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L31-L35] assume !(~bvugt32(~bvadd32(1bv32, ~result~0), 0bv32) && ~bvadd32(1bv32, ~result~0) == ~bvshl32(1bv32, ~n~0)); VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L34] assert false; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=32bv32] [L26] COND FALSE !(~bvslt32(~n~0, 1bv32)) VAL [~n~0=32bv32] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=32bv32] [L16-L21] ~n := #in~n; VAL [#in~n=32bv32, ~n=32bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=32bv32, ~n=32bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32] [L16-L21] ~n := #in~n; VAL [#in~n=31bv32, ~n=31bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=31bv32, ~n=31bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32] [L16-L21] ~n := #in~n; VAL [#in~n=30bv32, ~n=30bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=30bv32, ~n=30bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32] [L16-L21] ~n := #in~n; VAL [#in~n=29bv32, ~n=29bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=29bv32, ~n=29bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32] [L16-L21] ~n := #in~n; VAL [#in~n=28bv32, ~n=28bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=28bv32, ~n=28bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32] [L16-L21] ~n := #in~n; VAL [#in~n=27bv32, ~n=27bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=27bv32, ~n=27bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32] [L16-L21] ~n := #in~n; VAL [#in~n=26bv32, ~n=26bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=26bv32, ~n=26bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32] [L16-L21] ~n := #in~n; VAL [#in~n=25bv32, ~n=25bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=25bv32, ~n=25bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32] [L16-L21] ~n := #in~n; VAL [#in~n=24bv32, ~n=24bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=24bv32, ~n=24bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32] [L16-L21] ~n := #in~n; VAL [#in~n=23bv32, ~n=23bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=23bv32, ~n=23bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32] [L16-L21] ~n := #in~n; VAL [#in~n=22bv32, ~n=22bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=22bv32, ~n=22bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32] [L16-L21] ~n := #in~n; VAL [#in~n=21bv32, ~n=21bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=21bv32, ~n=21bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32] [L16-L21] ~n := #in~n; VAL [#in~n=20bv32, ~n=20bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=20bv32, ~n=20bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32] [L16-L21] ~n := #in~n; VAL [#in~n=19bv32, ~n=19bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=19bv32, ~n=19bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32] [L16-L21] ~n := #in~n; VAL [#in~n=18bv32, ~n=18bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=18bv32, ~n=18bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32] [L16-L21] ~n := #in~n; VAL [#in~n=17bv32, ~n=17bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=17bv32, ~n=17bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32] [L16-L21] ~n := #in~n; VAL [#in~n=16bv32, ~n=16bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=16bv32, ~n=16bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32] [L16-L21] ~n := #in~n; VAL [#in~n=15bv32, ~n=15bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=15bv32, ~n=15bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32] [L16-L21] ~n := #in~n; VAL [#in~n=14bv32, ~n=14bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=14bv32, ~n=14bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32] [L16-L21] ~n := #in~n; VAL [#in~n=13bv32, ~n=13bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=13bv32, ~n=13bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32] [L16-L21] ~n := #in~n; VAL [#in~n=12bv32, ~n=12bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=12bv32, ~n=12bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32] [L16-L21] ~n := #in~n; VAL [#in~n=11bv32, ~n=11bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=11bv32, ~n=11bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32] [L16-L21] ~n := #in~n; VAL [#in~n=10bv32, ~n=10bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=10bv32, ~n=10bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32] [L16-L21] ~n := #in~n; VAL [#in~n=9bv32, ~n=9bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=9bv32, ~n=9bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32] [L16-L21] ~n := #in~n; VAL [#in~n=8bv32, ~n=8bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=8bv32, ~n=8bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32] [L16-L21] ~n := #in~n; VAL [#in~n=7bv32, ~n=7bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=7bv32, ~n=7bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32] [L16-L21] ~n := #in~n; VAL [#in~n=6bv32, ~n=6bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=6bv32, ~n=6bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32] [L16-L21] ~n := #in~n; VAL [#in~n=5bv32, ~n=5bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=5bv32, ~n=5bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32] [L16-L21] ~n := #in~n; VAL [#in~n=4bv32, ~n=4bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=4bv32, ~n=4bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32] [L16-L21] ~n := #in~n; VAL [#in~n=3bv32, ~n=3bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=3bv32, ~n=3bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32] [L16-L21] ~n := #in~n; VAL [#in~n=2bv32, ~n=2bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=2bv32, ~n=2bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=1bv32] [L16-L21] ~n := #in~n; VAL [#in~n=1bv32, ~n=1bv32] [L17] COND TRUE 1bv32 == ~n [L18] #res := 1bv32; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32, #t~ret0=1bv32, ~n=2bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32, #t~ret0=3bv32, ~n=3bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32, #t~ret0=7bv32, ~n=4bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32, #t~ret0=15bv32, ~n=5bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32, #t~ret0=31bv32, ~n=6bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32, #t~ret0=63bv32, ~n=7bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32, #t~ret0=127bv32, ~n=8bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32, #t~ret0=255bv32, ~n=9bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32, #t~ret0=511bv32, ~n=10bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32, #t~ret0=1023bv32, ~n=11bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32, #t~ret0=2047bv32, ~n=12bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32, #t~ret0=4095bv32, ~n=13bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32, #t~ret0=8191bv32, ~n=14bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32, #t~ret0=16383bv32, ~n=15bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32, #t~ret0=32767bv32, ~n=16bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32, #t~ret0=65535bv32, ~n=17bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32, #t~ret0=131071bv32, ~n=18bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32, #t~ret0=262143bv32, ~n=19bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32, #t~ret0=524287bv32, ~n=20bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32, #t~ret0=1048575bv32, ~n=21bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32, #t~ret0=2097151bv32, ~n=22bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32, #t~ret0=4194303bv32, ~n=23bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32, #t~ret0=8388607bv32, ~n=24bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32, #t~ret0=16777215bv32, ~n=25bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32, #t~ret0=33554431bv32, ~n=26bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32, #t~ret0=67108863bv32, ~n=27bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32, #t~ret0=134217727bv32, ~n=28bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32, #t~ret0=268435455bv32, ~n=29bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32, #t~ret0=536870911bv32, ~n=30bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32, #t~ret0=1073741823bv32, ~n=31bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=32bv32, #t~ret0=2147483647bv32, ~n=32bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=4294967295bv32, ~n~0=32bv32] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L31] COND FALSE !(~bvugt32(~bvadd32(1bv32, ~result~0), 0bv32) && ~bvadd32(1bv32, ~result~0) == ~bvshl32(1bv32, ~n~0)) VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L34] assert false; VAL [~n~0=32bv32, ~result~0=4294967295bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=32bv32] [L26] COND FALSE !(~bvslt32(~n~0, 1bv32)) VAL [~n~0=32bv32] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=32bv32] [L16-L21] ~n := #in~n; VAL [#in~n=32bv32, ~n=32bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=32bv32, ~n=32bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32] [L16-L21] ~n := #in~n; VAL [#in~n=31bv32, ~n=31bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=31bv32, ~n=31bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32] [L16-L21] ~n := #in~n; VAL [#in~n=30bv32, ~n=30bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=30bv32, ~n=30bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32] [L16-L21] ~n := #in~n; VAL [#in~n=29bv32, ~n=29bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=29bv32, ~n=29bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32] [L16-L21] ~n := #in~n; VAL [#in~n=28bv32, ~n=28bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=28bv32, ~n=28bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32] [L16-L21] ~n := #in~n; VAL [#in~n=27bv32, ~n=27bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=27bv32, ~n=27bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32] [L16-L21] ~n := #in~n; VAL [#in~n=26bv32, ~n=26bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=26bv32, ~n=26bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32] [L16-L21] ~n := #in~n; VAL [#in~n=25bv32, ~n=25bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=25bv32, ~n=25bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32] [L16-L21] ~n := #in~n; VAL [#in~n=24bv32, ~n=24bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=24bv32, ~n=24bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32] [L16-L21] ~n := #in~n; VAL [#in~n=23bv32, ~n=23bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=23bv32, ~n=23bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32] [L16-L21] ~n := #in~n; VAL [#in~n=22bv32, ~n=22bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=22bv32, ~n=22bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32] [L16-L21] ~n := #in~n; VAL [#in~n=21bv32, ~n=21bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=21bv32, ~n=21bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32] [L16-L21] ~n := #in~n; VAL [#in~n=20bv32, ~n=20bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=20bv32, ~n=20bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32] [L16-L21] ~n := #in~n; VAL [#in~n=19bv32, ~n=19bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=19bv32, ~n=19bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32] [L16-L21] ~n := #in~n; VAL [#in~n=18bv32, ~n=18bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=18bv32, ~n=18bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32] [L16-L21] ~n := #in~n; VAL [#in~n=17bv32, ~n=17bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=17bv32, ~n=17bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32] [L16-L21] ~n := #in~n; VAL [#in~n=16bv32, ~n=16bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=16bv32, ~n=16bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32] [L16-L21] ~n := #in~n; VAL [#in~n=15bv32, ~n=15bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=15bv32, ~n=15bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32] [L16-L21] ~n := #in~n; VAL [#in~n=14bv32, ~n=14bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=14bv32, ~n=14bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32] [L16-L21] ~n := #in~n; VAL [#in~n=13bv32, ~n=13bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=13bv32, ~n=13bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32] [L16-L21] ~n := #in~n; VAL [#in~n=12bv32, ~n=12bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=12bv32, ~n=12bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32] [L16-L21] ~n := #in~n; VAL [#in~n=11bv32, ~n=11bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=11bv32, ~n=11bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32] [L16-L21] ~n := #in~n; VAL [#in~n=10bv32, ~n=10bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=10bv32, ~n=10bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32] [L16-L21] ~n := #in~n; VAL [#in~n=9bv32, ~n=9bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=9bv32, ~n=9bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32] [L16-L21] ~n := #in~n; VAL [#in~n=8bv32, ~n=8bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=8bv32, ~n=8bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32] [L16-L21] ~n := #in~n; VAL [#in~n=7bv32, ~n=7bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=7bv32, ~n=7bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32] [L16-L21] ~n := #in~n; VAL [#in~n=6bv32, ~n=6bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=6bv32, ~n=6bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32] [L16-L21] ~n := #in~n; VAL [#in~n=5bv32, ~n=5bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=5bv32, ~n=5bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32] [L16-L21] ~n := #in~n; VAL [#in~n=4bv32, ~n=4bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=4bv32, ~n=4bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32] [L16-L21] ~n := #in~n; VAL [#in~n=3bv32, ~n=3bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=3bv32, ~n=3bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32] [L16-L21] ~n := #in~n; VAL [#in~n=2bv32, ~n=2bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=2bv32, ~n=2bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=1bv32] [L16-L21] ~n := #in~n; VAL [#in~n=1bv32, ~n=1bv32] [L17] COND TRUE 1bv32 == ~n [L18] #res := 1bv32; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32, #t~ret0=1bv32, ~n=2bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32, #t~ret0=3bv32, ~n=3bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32, #t~ret0=7bv32, ~n=4bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32, #t~ret0=15bv32, ~n=5bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32, #t~ret0=31bv32, ~n=6bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32, #t~ret0=63bv32, ~n=7bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32, #t~ret0=127bv32, ~n=8bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32, #t~ret0=255bv32, ~n=9bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32, #t~ret0=511bv32, ~n=10bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32, #t~ret0=1023bv32, ~n=11bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32, #t~ret0=2047bv32, ~n=12bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32, #t~ret0=4095bv32, ~n=13bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32, #t~ret0=8191bv32, ~n=14bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32, #t~ret0=16383bv32, ~n=15bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32, #t~ret0=32767bv32, ~n=16bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32, #t~ret0=65535bv32, ~n=17bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32, #t~ret0=131071bv32, ~n=18bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32, #t~ret0=262143bv32, ~n=19bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32, #t~ret0=524287bv32, ~n=20bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32, #t~ret0=1048575bv32, ~n=21bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32, #t~ret0=2097151bv32, ~n=22bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32, #t~ret0=4194303bv32, ~n=23bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32, #t~ret0=8388607bv32, ~n=24bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32, #t~ret0=16777215bv32, ~n=25bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32, #t~ret0=33554431bv32, ~n=26bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32, #t~ret0=67108863bv32, ~n=27bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32, #t~ret0=134217727bv32, ~n=28bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32, #t~ret0=268435455bv32, ~n=29bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32, #t~ret0=536870911bv32, ~n=30bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32, #t~ret0=1073741823bv32, ~n=31bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=32bv32, #t~ret0=2147483647bv32, ~n=32bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=4294967295bv32, ~n~0=32bv32] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L31] COND FALSE !(~bvugt32(~bvadd32(1bv32, ~result~0), 0bv32) && ~bvadd32(1bv32, ~result~0) == ~bvshl32(1bv32, ~n~0)) VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L34] assert false; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=32bv32] [L26] COND FALSE !(~bvslt32(~n~0, 1bv32)) VAL [~n~0=32bv32] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=32bv32] [L16-L21] ~n := #in~n; VAL [#in~n=32bv32, ~n=32bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=32bv32, ~n=32bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32] [L16-L21] ~n := #in~n; VAL [#in~n=31bv32, ~n=31bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=31bv32, ~n=31bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32] [L16-L21] ~n := #in~n; VAL [#in~n=30bv32, ~n=30bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=30bv32, ~n=30bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32] [L16-L21] ~n := #in~n; VAL [#in~n=29bv32, ~n=29bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=29bv32, ~n=29bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32] [L16-L21] ~n := #in~n; VAL [#in~n=28bv32, ~n=28bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=28bv32, ~n=28bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32] [L16-L21] ~n := #in~n; VAL [#in~n=27bv32, ~n=27bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=27bv32, ~n=27bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32] [L16-L21] ~n := #in~n; VAL [#in~n=26bv32, ~n=26bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=26bv32, ~n=26bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32] [L16-L21] ~n := #in~n; VAL [#in~n=25bv32, ~n=25bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=25bv32, ~n=25bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32] [L16-L21] ~n := #in~n; VAL [#in~n=24bv32, ~n=24bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=24bv32, ~n=24bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32] [L16-L21] ~n := #in~n; VAL [#in~n=23bv32, ~n=23bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=23bv32, ~n=23bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32] [L16-L21] ~n := #in~n; VAL [#in~n=22bv32, ~n=22bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=22bv32, ~n=22bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32] [L16-L21] ~n := #in~n; VAL [#in~n=21bv32, ~n=21bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=21bv32, ~n=21bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32] [L16-L21] ~n := #in~n; VAL [#in~n=20bv32, ~n=20bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=20bv32, ~n=20bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32] [L16-L21] ~n := #in~n; VAL [#in~n=19bv32, ~n=19bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=19bv32, ~n=19bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32] [L16-L21] ~n := #in~n; VAL [#in~n=18bv32, ~n=18bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=18bv32, ~n=18bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32] [L16-L21] ~n := #in~n; VAL [#in~n=17bv32, ~n=17bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=17bv32, ~n=17bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32] [L16-L21] ~n := #in~n; VAL [#in~n=16bv32, ~n=16bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=16bv32, ~n=16bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32] [L16-L21] ~n := #in~n; VAL [#in~n=15bv32, ~n=15bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=15bv32, ~n=15bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32] [L16-L21] ~n := #in~n; VAL [#in~n=14bv32, ~n=14bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=14bv32, ~n=14bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32] [L16-L21] ~n := #in~n; VAL [#in~n=13bv32, ~n=13bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=13bv32, ~n=13bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32] [L16-L21] ~n := #in~n; VAL [#in~n=12bv32, ~n=12bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=12bv32, ~n=12bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32] [L16-L21] ~n := #in~n; VAL [#in~n=11bv32, ~n=11bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=11bv32, ~n=11bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32] [L16-L21] ~n := #in~n; VAL [#in~n=10bv32, ~n=10bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=10bv32, ~n=10bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32] [L16-L21] ~n := #in~n; VAL [#in~n=9bv32, ~n=9bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=9bv32, ~n=9bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32] [L16-L21] ~n := #in~n; VAL [#in~n=8bv32, ~n=8bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=8bv32, ~n=8bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32] [L16-L21] ~n := #in~n; VAL [#in~n=7bv32, ~n=7bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=7bv32, ~n=7bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32] [L16-L21] ~n := #in~n; VAL [#in~n=6bv32, ~n=6bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=6bv32, ~n=6bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32] [L16-L21] ~n := #in~n; VAL [#in~n=5bv32, ~n=5bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=5bv32, ~n=5bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32] [L16-L21] ~n := #in~n; VAL [#in~n=4bv32, ~n=4bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=4bv32, ~n=4bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32] [L16-L21] ~n := #in~n; VAL [#in~n=3bv32, ~n=3bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=3bv32, ~n=3bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32] [L16-L21] ~n := #in~n; VAL [#in~n=2bv32, ~n=2bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=2bv32, ~n=2bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=1bv32] [L16-L21] ~n := #in~n; VAL [#in~n=1bv32, ~n=1bv32] [L17] COND TRUE 1bv32 == ~n [L18] #res := 1bv32; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32, #t~ret0=1bv32, ~n=2bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32, #t~ret0=3bv32, ~n=3bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32, #t~ret0=7bv32, ~n=4bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32, #t~ret0=15bv32, ~n=5bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32, #t~ret0=31bv32, ~n=6bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32, #t~ret0=63bv32, ~n=7bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32, #t~ret0=127bv32, ~n=8bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32, #t~ret0=255bv32, ~n=9bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32, #t~ret0=511bv32, ~n=10bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32, #t~ret0=1023bv32, ~n=11bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32, #t~ret0=2047bv32, ~n=12bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32, #t~ret0=4095bv32, ~n=13bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32, #t~ret0=8191bv32, ~n=14bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32, #t~ret0=16383bv32, ~n=15bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32, #t~ret0=32767bv32, ~n=16bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32, #t~ret0=65535bv32, ~n=17bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32, #t~ret0=131071bv32, ~n=18bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32, #t~ret0=262143bv32, ~n=19bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32, #t~ret0=524287bv32, ~n=20bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32, #t~ret0=1048575bv32, ~n=21bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32, #t~ret0=2097151bv32, ~n=22bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32, #t~ret0=4194303bv32, ~n=23bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32, #t~ret0=8388607bv32, ~n=24bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32, #t~ret0=16777215bv32, ~n=25bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32, #t~ret0=33554431bv32, ~n=26bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32, #t~ret0=67108863bv32, ~n=27bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32, #t~ret0=134217727bv32, ~n=28bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32, #t~ret0=268435455bv32, ~n=29bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32, #t~ret0=536870911bv32, ~n=30bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32, #t~ret0=1073741823bv32, ~n=31bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=32bv32, #t~ret0=2147483647bv32, ~n=32bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=4294967295bv32, ~n~0=32bv32] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L31] COND FALSE !(~bvugt32(~bvadd32(1bv32, ~result~0), 0bv32) && ~bvadd32(1bv32, ~result~0) == ~bvshl32(1bv32, ~n~0)) VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L34] assert false; VAL [~n~0=32bv32, ~result~0=4294967295bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); [?] RET call ULTIMATE.init(); [?] CALL call #t~ret3 := main(); [L25] ~n~0 := #t~nondet1; [L25] havoc #t~nondet1; VAL [~n~0=32bv32] [L26] COND FALSE !(~bvslt32(~n~0, 1bv32)) VAL [~n~0=32bv32] [L29] CALL call #t~ret2 := hanoi(~n~0); VAL [#in~n=32bv32] [L16-L21] ~n := #in~n; VAL [#in~n=32bv32, ~n=32bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=32bv32, ~n=32bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32] [L16-L21] ~n := #in~n; VAL [#in~n=31bv32, ~n=31bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=31bv32, ~n=31bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32] [L16-L21] ~n := #in~n; VAL [#in~n=30bv32, ~n=30bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=30bv32, ~n=30bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32] [L16-L21] ~n := #in~n; VAL [#in~n=29bv32, ~n=29bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=29bv32, ~n=29bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32] [L16-L21] ~n := #in~n; VAL [#in~n=28bv32, ~n=28bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=28bv32, ~n=28bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32] [L16-L21] ~n := #in~n; VAL [#in~n=27bv32, ~n=27bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=27bv32, ~n=27bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32] [L16-L21] ~n := #in~n; VAL [#in~n=26bv32, ~n=26bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=26bv32, ~n=26bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32] [L16-L21] ~n := #in~n; VAL [#in~n=25bv32, ~n=25bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=25bv32, ~n=25bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32] [L16-L21] ~n := #in~n; VAL [#in~n=24bv32, ~n=24bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=24bv32, ~n=24bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32] [L16-L21] ~n := #in~n; VAL [#in~n=23bv32, ~n=23bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=23bv32, ~n=23bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32] [L16-L21] ~n := #in~n; VAL [#in~n=22bv32, ~n=22bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=22bv32, ~n=22bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32] [L16-L21] ~n := #in~n; VAL [#in~n=21bv32, ~n=21bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=21bv32, ~n=21bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32] [L16-L21] ~n := #in~n; VAL [#in~n=20bv32, ~n=20bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=20bv32, ~n=20bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32] [L16-L21] ~n := #in~n; VAL [#in~n=19bv32, ~n=19bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=19bv32, ~n=19bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32] [L16-L21] ~n := #in~n; VAL [#in~n=18bv32, ~n=18bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=18bv32, ~n=18bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32] [L16-L21] ~n := #in~n; VAL [#in~n=17bv32, ~n=17bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=17bv32, ~n=17bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32] [L16-L21] ~n := #in~n; VAL [#in~n=16bv32, ~n=16bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=16bv32, ~n=16bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32] [L16-L21] ~n := #in~n; VAL [#in~n=15bv32, ~n=15bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=15bv32, ~n=15bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32] [L16-L21] ~n := #in~n; VAL [#in~n=14bv32, ~n=14bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=14bv32, ~n=14bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32] [L16-L21] ~n := #in~n; VAL [#in~n=13bv32, ~n=13bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=13bv32, ~n=13bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32] [L16-L21] ~n := #in~n; VAL [#in~n=12bv32, ~n=12bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=12bv32, ~n=12bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32] [L16-L21] ~n := #in~n; VAL [#in~n=11bv32, ~n=11bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=11bv32, ~n=11bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32] [L16-L21] ~n := #in~n; VAL [#in~n=10bv32, ~n=10bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=10bv32, ~n=10bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32] [L16-L21] ~n := #in~n; VAL [#in~n=9bv32, ~n=9bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=9bv32, ~n=9bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32] [L16-L21] ~n := #in~n; VAL [#in~n=8bv32, ~n=8bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=8bv32, ~n=8bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32] [L16-L21] ~n := #in~n; VAL [#in~n=7bv32, ~n=7bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=7bv32, ~n=7bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32] [L16-L21] ~n := #in~n; VAL [#in~n=6bv32, ~n=6bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=6bv32, ~n=6bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32] [L16-L21] ~n := #in~n; VAL [#in~n=5bv32, ~n=5bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=5bv32, ~n=5bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32] [L16-L21] ~n := #in~n; VAL [#in~n=4bv32, ~n=4bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=4bv32, ~n=4bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32] [L16-L21] ~n := #in~n; VAL [#in~n=3bv32, ~n=3bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=3bv32, ~n=3bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32] [L16-L21] ~n := #in~n; VAL [#in~n=2bv32, ~n=2bv32] [L17] COND FALSE !(1bv32 == ~n) VAL [#in~n=2bv32, ~n=2bv32] [L20] CALL call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=1bv32] [L16-L21] ~n := #in~n; VAL [#in~n=1bv32, ~n=1bv32] [L17] COND TRUE 1bv32 == ~n [L18] #res := 1bv32; VAL [#in~n=1bv32, #res=1bv32, ~n=1bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=2bv32, #t~ret0=1bv32, ~n=2bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=2bv32, #res=3bv32, ~n=2bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=3bv32, #t~ret0=3bv32, ~n=3bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=3bv32, #res=7bv32, ~n=3bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=4bv32, #t~ret0=7bv32, ~n=4bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=4bv32, #res=15bv32, ~n=4bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=5bv32, #t~ret0=15bv32, ~n=5bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=5bv32, #res=31bv32, ~n=5bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=6bv32, #t~ret0=31bv32, ~n=6bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=6bv32, #res=63bv32, ~n=6bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=7bv32, #t~ret0=63bv32, ~n=7bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=7bv32, #res=127bv32, ~n=7bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=8bv32, #t~ret0=127bv32, ~n=8bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=8bv32, #res=255bv32, ~n=8bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=9bv32, #t~ret0=255bv32, ~n=9bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=9bv32, #res=511bv32, ~n=9bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=10bv32, #t~ret0=511bv32, ~n=10bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=10bv32, #res=1023bv32, ~n=10bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=11bv32, #t~ret0=1023bv32, ~n=11bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=11bv32, #res=2047bv32, ~n=11bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=12bv32, #t~ret0=2047bv32, ~n=12bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=12bv32, #res=4095bv32, ~n=12bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=13bv32, #t~ret0=4095bv32, ~n=13bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=13bv32, #res=8191bv32, ~n=13bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=14bv32, #t~ret0=8191bv32, ~n=14bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=14bv32, #res=16383bv32, ~n=14bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=15bv32, #t~ret0=16383bv32, ~n=15bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=15bv32, #res=32767bv32, ~n=15bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=16bv32, #t~ret0=32767bv32, ~n=16bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=16bv32, #res=65535bv32, ~n=16bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=17bv32, #t~ret0=65535bv32, ~n=17bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=17bv32, #res=131071bv32, ~n=17bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=18bv32, #t~ret0=131071bv32, ~n=18bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=18bv32, #res=262143bv32, ~n=18bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=19bv32, #t~ret0=262143bv32, ~n=19bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=19bv32, #res=524287bv32, ~n=19bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=20bv32, #t~ret0=524287bv32, ~n=20bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=20bv32, #res=1048575bv32, ~n=20bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=21bv32, #t~ret0=1048575bv32, ~n=21bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=21bv32, #res=2097151bv32, ~n=21bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=22bv32, #t~ret0=2097151bv32, ~n=22bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=22bv32, #res=4194303bv32, ~n=22bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=23bv32, #t~ret0=4194303bv32, ~n=23bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=23bv32, #res=8388607bv32, ~n=23bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=24bv32, #t~ret0=8388607bv32, ~n=24bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=24bv32, #res=16777215bv32, ~n=24bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=25bv32, #t~ret0=16777215bv32, ~n=25bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=25bv32, #res=33554431bv32, ~n=25bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=26bv32, #t~ret0=33554431bv32, ~n=26bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=26bv32, #res=67108863bv32, ~n=26bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=27bv32, #t~ret0=67108863bv32, ~n=27bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=27bv32, #res=134217727bv32, ~n=27bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=28bv32, #t~ret0=134217727bv32, ~n=28bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=28bv32, #res=268435455bv32, ~n=28bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=29bv32, #t~ret0=268435455bv32, ~n=29bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=29bv32, #res=536870911bv32, ~n=29bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=30bv32, #t~ret0=536870911bv32, ~n=30bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=30bv32, #res=1073741823bv32, ~n=30bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=31bv32, #t~ret0=1073741823bv32, ~n=31bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=31bv32, #res=2147483647bv32, ~n=31bv32] [L20] RET call #t~ret0 := hanoi(~bvsub32(~n, 1bv32)); VAL [#in~n=32bv32, #t~ret0=2147483647bv32, ~n=32bv32] [L20] #res := ~bvadd32(1bv32, ~bvmul32(2bv32, #t~ret0)); [L20] havoc #t~ret0; VAL [#in~n=32bv32, #res=4294967295bv32, ~n=32bv32] [L29] RET call #t~ret2 := hanoi(~n~0); VAL [#t~ret2=4294967295bv32, ~n~0=32bv32] [L29] ~result~0 := #t~ret2; [L29] havoc #t~ret2; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L31] COND FALSE !(~bvugt32(~bvadd32(1bv32, ~result~0), 0bv32) && ~bvadd32(1bv32, ~result~0) == ~bvshl32(1bv32, ~n~0)) VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L34] assert false; VAL [~n~0=32bv32, ~result~0=4294967295bv32] [L25] int n = __VERIFIER_nondet_int(); [L26] COND FALSE !(n < 1) VAL [n=32] [L29] CALL, EXPR hanoi(n) VAL [\old(n)=32] [L17] COND FALSE !(n == 1) VAL [\old(n)=32, n=32] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=31] [L17] COND FALSE !(n == 1) VAL [\old(n)=31, n=31] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=30] [L17] COND FALSE !(n == 1) VAL [\old(n)=30, n=30] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=29] [L17] COND FALSE !(n == 1) VAL [\old(n)=29, n=29] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=28] [L17] COND FALSE !(n == 1) VAL [\old(n)=28, n=28] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=27] [L17] COND FALSE !(n == 1) VAL [\old(n)=27, n=27] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=26] [L17] COND FALSE !(n == 1) VAL [\old(n)=26, n=26] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=25] [L17] COND FALSE !(n == 1) VAL [\old(n)=25, n=25] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=24] [L17] COND FALSE !(n == 1) VAL [\old(n)=24, n=24] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=23] [L17] COND FALSE !(n == 1) VAL [\old(n)=23, n=23] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=22] [L17] COND FALSE !(n == 1) VAL [\old(n)=22, n=22] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=21] [L17] COND FALSE !(n == 1) VAL [\old(n)=21, n=21] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=20] [L17] COND FALSE !(n == 1) VAL [\old(n)=20, n=20] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=19] [L17] COND FALSE !(n == 1) VAL [\old(n)=19, n=19] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=18] [L17] COND FALSE !(n == 1) VAL [\old(n)=18, n=18] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=17] [L17] COND FALSE !(n == 1) VAL [\old(n)=17, n=17] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=16] [L17] COND FALSE !(n == 1) VAL [\old(n)=16, n=16] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=15] [L17] COND FALSE !(n == 1) VAL [\old(n)=15, n=15] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=14] [L17] COND FALSE !(n == 1) VAL [\old(n)=14, n=14] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=13] [L17] COND FALSE !(n == 1) VAL [\old(n)=13, n=13] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=12] [L17] COND FALSE !(n == 1) VAL [\old(n)=12, n=12] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=11] [L17] COND FALSE !(n == 1) VAL [\old(n)=11, n=11] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=10] [L17] COND FALSE !(n == 1) VAL [\old(n)=10, n=10] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=9] [L17] COND FALSE !(n == 1) VAL [\old(n)=9, n=9] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=8] [L17] COND FALSE !(n == 1) VAL [\old(n)=8, n=8] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=7] [L17] COND FALSE !(n == 1) VAL [\old(n)=7, n=7] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=6] [L17] COND FALSE !(n == 1) VAL [\old(n)=6, n=6] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=5] [L17] COND FALSE !(n == 1) VAL [\old(n)=5, n=5] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=4] [L17] COND FALSE !(n == 1) VAL [\old(n)=4, n=4] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=3] [L17] COND FALSE !(n == 1) VAL [\old(n)=3, n=3] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=2] [L17] COND FALSE !(n == 1) VAL [\old(n)=2, n=2] [L20] CALL, EXPR hanoi(n-1) VAL [\old(n)=1] [L17] COND TRUE n == 1 [L18] return 1; VAL [\old(n)=1, \result=1, n=1] [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=2, hanoi(n-1)=1, n=2] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=3, hanoi(n-1)=3, n=3] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=4, hanoi(n-1)=7, n=4] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=5, hanoi(n-1)=15, n=5] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=6, hanoi(n-1)=31, n=6] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=7, hanoi(n-1)=63, n=7] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=8, hanoi(n-1)=127, n=8] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=9, hanoi(n-1)=255, n=9] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=10, hanoi(n-1)=511, n=10] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=11, hanoi(n-1)=1023, n=11] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=12, hanoi(n-1)=2047, n=12] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=13, hanoi(n-1)=4095, n=13] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=14, hanoi(n-1)=8191, n=14] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=15, hanoi(n-1)=16383, n=15] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=16, hanoi(n-1)=32767, n=16] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=17, hanoi(n-1)=65535, n=17] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=18, hanoi(n-1)=131071, n=18] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=19, hanoi(n-1)=262143, n=19] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=20, hanoi(n-1)=524287, n=20] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=21, hanoi(n-1)=1048575, n=21] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=22, hanoi(n-1)=2097151, n=22] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=23, hanoi(n-1)=4194303, n=23] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=24, hanoi(n-1)=8388607, n=24] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=25, hanoi(n-1)=16777215, n=25] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=26, hanoi(n-1)=33554431, n=26] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=27, hanoi(n-1)=67108863, n=27] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=28, hanoi(n-1)=134217727, n=28] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=29, hanoi(n-1)=268435455, n=29] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=30, hanoi(n-1)=536870911, n=30] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=31, hanoi(n-1)=1073741823, n=31] [L20] return 2 * (hanoi(n-1)) + 1; [L20] RET, EXPR hanoi(n-1) VAL [\old(n)=32, hanoi(n-1)=2147483647, n=32] [L20] return 2 * (hanoi(n-1)) + 1; [L29] RET, EXPR hanoi(n) VAL [hanoi(n)=-1, n=32] [L29] unsigned result = hanoi(n); [L31] COND FALSE !(result+1>0 && result+1 == 1<0 && result+1 == 1<0 && result+1 == 1<