./Ultimate.py --spec ../../sv-benchmarks/c/properties/unreach-call.prp --file ../../sv-benchmarks/c/recursive-simple/id_i10_o10_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_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/data/config -Xmx12G -Xms1G -jar /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/data -tc /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/config/KojakReach.xml -i ../../sv-benchmarks/c/recursive-simple/id_i10_o10_false-unreach-call_true-termination.c -s /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/config/svcomp-Reach-32bit-Kojak_Default.epf --cacsl2boogietranslator.entry.function main --witnessprinter.witness.directory /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak --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 Kojak --witnessprinter.graph.data.architecture 32bit --witnessprinter.graph.data.programhash 0aae719d835771c4602eac7b24cfefa200f147c0 .................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. 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 13:06:22,265 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 13:06:22,266 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 13:06:22,273 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 13:06:22,273 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 13:06:22,274 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 13:06:22,275 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 13:06:22,276 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 13:06:22,277 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 13:06:22,278 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 13:06:22,278 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 13:06:22,278 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 13:06:22,279 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 13:06:22,280 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 13:06:22,280 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 13:06:22,281 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 13:06:22,281 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 13:06:22,283 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 13:06:22,284 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 13:06:22,285 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 13:06:22,286 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 13:06:22,286 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 13:06:22,288 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 13:06:22,288 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 13:06:22,288 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 13:06:22,289 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 13:06:22,289 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 13:06:22,290 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 13:06:22,291 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 13:06:22,291 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 13:06:22,291 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 13:06:22,292 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 13:06:22,292 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 13:06:22,292 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 13:06:22,293 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 13:06:22,293 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 13:06:22,294 INFO L98 SettingsManager]: Beginning loading settings from /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/config/svcomp-Reach-32bit-Kojak_Default.epf [2018-11-23 13:06:22,302 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 13:06:22,303 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 13:06:22,303 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 13:06:22,303 INFO L133 SettingsManager]: * ... to procedures called more than once=ALWAYS [2018-11-23 13:06:22,304 INFO L131 SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults: [2018-11-23 13:06:22,304 INFO L133 SettingsManager]: * Create parallel compositions if possible=false [2018-11-23 13:06:22,304 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 13:06:22,304 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 13:06:22,304 INFO L133 SettingsManager]: * Overapproximate operations on floating types=true [2018-11-23 13:06:22,305 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 13:06:22,305 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 13:06:22,305 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 13:06:22,305 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 13:06:22,305 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 13:06:22,305 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 13:06:22,305 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 13:06:22,306 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 13:06:22,306 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 13:06:22,306 INFO L131 SettingsManager]: Preferences of CodeCheck differ from their defaults: [2018-11-23 13:06:22,306 INFO L133 SettingsManager]: * Timeout in seconds=1000000 [2018-11-23 13:06:22,306 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 13:06:22,306 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 13:06:22,306 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:10000 [2018-11-23 13:06:22,307 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 13:06:22,307 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 13:06:22,307 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 13:06:22,307 INFO L133 SettingsManager]: * Trace refinement strategy=PENGUIN [2018-11-23 13:06:22,307 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 13:06:22,307 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in [2018-11-23 13:06:22,308 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_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak 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 -> Kojak 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 -> 0aae719d835771c4602eac7b24cfefa200f147c0 [2018-11-23 13:06:22,327 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 13:06:22,336 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 13:06:22,338 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 13:06:22,339 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 13:06:22,339 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 13:06:22,340 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/../../sv-benchmarks/c/recursive-simple/id_i10_o10_false-unreach-call_true-termination.c [2018-11-23 13:06:22,376 INFO L221 CDTParser]: Created temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/data/cfd065414/3adf722750a549d69ebd4f1b891679d0/FLAGafcdc6277 [2018-11-23 13:06:22,766 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 13:06:22,766 INFO L161 CDTParser]: Scanning /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/sv-benchmarks/c/recursive-simple/id_i10_o10_false-unreach-call_true-termination.c [2018-11-23 13:06:22,770 INFO L355 CDTParser]: About to delete temporary CDT project at /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/data/cfd065414/3adf722750a549d69ebd4f1b891679d0/FLAGafcdc6277 [2018-11-23 13:06:22,780 INFO L363 CDTParser]: Successfully deleted /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/data/cfd065414/3adf722750a549d69ebd4f1b891679d0 [2018-11-23 13:06:22,782 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 13:06:22,783 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 13:06:22,784 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 13:06:22,784 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 13:06:22,786 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 13:06:22,786 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,788 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@33c486bb and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22, skipping insertion in model container [2018-11-23 13:06:22,788 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,794 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 13:06:22,803 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 13:06:22,901 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 13:06:22,903 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 13:06:22,911 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 13:06:22,918 INFO L195 MainTranslator]: Completed translation [2018-11-23 13:06:22,918 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22 WrapperNode [2018-11-23 13:06:22,918 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 13:06:22,919 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 13:06:22,919 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 13:06:22,919 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 13:06:22,925 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,929 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,942 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 13:06:22,943 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 13:06:22,943 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 13:06:22,943 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 13:06:22,950 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,950 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,951 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,951 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,952 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,954 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,954 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... [2018-11-23 13:06:22,955 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 13:06:22,955 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 13:06:22,955 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 13:06:22,956 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 13:06:22,956 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:06:22" (1/1) ... No working directory specified, using /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/z3 Starting monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:10000 (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:10000 [2018-11-23 13:06:23,030 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 13:06:23,030 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 13:06:23,030 INFO L130 BoogieDeclarations]: Found specification of procedure id [2018-11-23 13:06:23,030 INFO L138 BoogieDeclarations]: Found implementation of procedure id [2018-11-23 13:06:23,122 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 13:06:23,122 INFO L280 CfgBuilder]: Removed 4 assue(true) statements. [2018-11-23 13:06:23,122 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:06:23 BoogieIcfgContainer [2018-11-23 13:06:23,122 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 13:06:23,123 INFO L113 PluginConnector]: ------------------------CodeCheck---------------------------- [2018-11-23 13:06:23,123 INFO L271 PluginConnector]: Initializing CodeCheck... [2018-11-23 13:06:23,131 INFO L276 PluginConnector]: CodeCheck initialized [2018-11-23 13:06:23,132 INFO L185 PluginConnector]: Executing the observer CodeCheckObserver from plugin CodeCheck for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:06:23" (1/1) ... [2018-11-23 13:06:23,141 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:06:23,166 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:23,174 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 16 states to 14 states and 16 transitions. [2018-11-23 13:06:23,175 INFO L276 IsEmpty]: Start isEmpty. Operand 14 states and 16 transitions. [2018-11-23 13:06:23,178 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 10 [2018-11-23 13:06:23,178 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:23,232 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:23,316 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 13:06:23,386 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:23,386 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 20 states to 16 states and 18 transitions. [2018-11-23 13:06:23,386 INFO L276 IsEmpty]: Start isEmpty. Operand 16 states and 18 transitions. [2018-11-23 13:06:23,387 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 16 [2018-11-23 13:06:23,387 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:23,397 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:23,421 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 13:06:23,519 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:23,519 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 30 states to 19 states and 23 transitions. [2018-11-23 13:06:23,519 INFO L276 IsEmpty]: Start isEmpty. Operand 19 states and 23 transitions. [2018-11-23 13:06:23,520 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 22 [2018-11-23 13:06:23,520 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:23,529 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:23,571 INFO L134 CoverageAnalysis]: Checked inductivity of 14 backedges. 0 proven. 7 refuted. 0 times theorem prover too weak. 7 trivial. 0 not checked. [2018-11-23 13:06:23,644 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:23,644 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 39 states to 22 states and 29 transitions. [2018-11-23 13:06:23,644 INFO L276 IsEmpty]: Start isEmpty. Operand 22 states and 29 transitions. [2018-11-23 13:06:23,645 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 28 [2018-11-23 13:06:23,645 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:23,656 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:23,782 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 13:06:24,525 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:24,525 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 83 states to 35 states and 56 transitions. [2018-11-23 13:06:24,526 INFO L276 IsEmpty]: Start isEmpty. Operand 35 states and 56 transitions. [2018-11-23 13:06:24,526 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 34 [2018-11-23 13:06:24,526 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:24,534 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:24,587 INFO L134 CoverageAnalysis]: Checked inductivity of 52 backedges. 0 proven. 26 refuted. 0 times theorem prover too weak. 26 trivial. 0 not checked. [2018-11-23 13:06:24,816 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:24,817 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 96 states to 38 states and 64 transitions. [2018-11-23 13:06:24,817 INFO L276 IsEmpty]: Start isEmpty. Operand 38 states and 64 transitions. [2018-11-23 13:06:24,818 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 34 [2018-11-23 13:06:24,818 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:24,824 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:24,844 INFO L134 CoverageAnalysis]: Checked inductivity of 52 backedges. 0 proven. 26 refuted. 0 times theorem prover too weak. 26 trivial. 0 not checked. [2018-11-23 13:06:25,028 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:25,029 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 113 states to 41 states and 74 transitions. [2018-11-23 13:06:25,029 INFO L276 IsEmpty]: Start isEmpty. Operand 41 states and 74 transitions. [2018-11-23 13:06:25,030 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 40 [2018-11-23 13:06:25,030 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:25,038 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:25,213 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 13:06:26,611 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:26,612 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 168 states to 57 states and 107 transitions. [2018-11-23 13:06:26,613 INFO L276 IsEmpty]: Start isEmpty. Operand 57 states and 107 transitions. [2018-11-23 13:06:26,614 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 46 [2018-11-23 13:06:26,614 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:26,622 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:26,792 INFO L134 CoverageAnalysis]: Checked inductivity of 114 backedges. 0 proven. 57 refuted. 0 times theorem prover too weak. 57 trivial. 0 not checked. [2018-11-23 13:06:28,201 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:28,202 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 216 states to 73 states and 137 transitions. [2018-11-23 13:06:28,202 INFO L276 IsEmpty]: Start isEmpty. Operand 73 states and 137 transitions. [2018-11-23 13:06:28,203 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 52 [2018-11-23 13:06:28,203 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:28,211 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:28,430 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 13:06:30,161 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:30,162 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 261 states to 89 states and 165 transitions. [2018-11-23 13:06:30,162 INFO L276 IsEmpty]: Start isEmpty. Operand 89 states and 165 transitions. [2018-11-23 13:06:30,164 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 58 [2018-11-23 13:06:30,164 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:30,172 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:30,412 INFO L134 CoverageAnalysis]: Checked inductivity of 200 backedges. 0 proven. 100 refuted. 0 times theorem prover too weak. 100 trivial. 0 not checked. [2018-11-23 13:06:30,968 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:30,968 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 278 states to 92 states and 174 transitions. [2018-11-23 13:06:30,968 INFO L276 IsEmpty]: Start isEmpty. Operand 92 states and 174 transitions. [2018-11-23 13:06:30,969 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 58 [2018-11-23 13:06:30,969 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:30,975 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:30,994 INFO L134 CoverageAnalysis]: Checked inductivity of 200 backedges. 0 proven. 100 refuted. 0 times theorem prover too weak. 100 trivial. 0 not checked. [2018-11-23 13:06:31,702 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:31,703 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 315 states to 98 states and 193 transitions. [2018-11-23 13:06:31,703 INFO L276 IsEmpty]: Start isEmpty. Operand 98 states and 193 transitions. [2018-11-23 13:06:31,705 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 58 [2018-11-23 13:06:31,705 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:31,711 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:31,726 INFO L134 CoverageAnalysis]: Checked inductivity of 200 backedges. 0 proven. 100 refuted. 0 times theorem prover too weak. 100 trivial. 0 not checked. [2018-11-23 13:06:32,088 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:32,089 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 328 states to 101 states and 200 transitions. [2018-11-23 13:06:32,089 INFO L276 IsEmpty]: Start isEmpty. Operand 101 states and 200 transitions. [2018-11-23 13:06:32,090 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 58 [2018-11-23 13:06:32,090 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:32,095 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:32,111 INFO L134 CoverageAnalysis]: Checked inductivity of 200 backedges. 0 proven. 100 refuted. 0 times theorem prover too weak. 100 trivial. 0 not checked. [2018-11-23 13:06:32,493 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:32,494 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 352 states to 104 states and 215 transitions. [2018-11-23 13:06:32,494 INFO L276 IsEmpty]: Start isEmpty. Operand 104 states and 215 transitions. [2018-11-23 13:06:32,494 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 64 [2018-11-23 13:06:32,494 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:32,498 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:32,579 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 13:06:33,025 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:33,026 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 369 states to 107 states and 225 transitions. [2018-11-23 13:06:33,026 INFO L276 IsEmpty]: Start isEmpty. Operand 107 states and 225 transitions. [2018-11-23 13:06:33,027 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 64 [2018-11-23 13:06:33,027 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:33,033 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:33,049 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 13:06:34,325 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:34,326 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 425 states to 116 states and 255 transitions. [2018-11-23 13:06:34,326 INFO L276 IsEmpty]: Start isEmpty. Operand 116 states and 255 transitions. [2018-11-23 13:06:34,327 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 64 [2018-11-23 13:06:34,327 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:34,332 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:06:34,347 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 13:06:34,773 INFO L82 GeneralOperation]: Start removeUnreachable. Operand no size info available [2018-11-23 13:06:34,773 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 452 states to 119 states and 272 transitions. [2018-11-23 13:06:34,773 INFO L276 IsEmpty]: Start isEmpty. Operand 119 states and 272 transitions. [2018-11-23 13:06:34,774 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 70 [2018-11-23 13:06:34,774 INFO L427 CodeCheckObserver]: Error Path is FOUND. [2018-11-23 13:06:34,778 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 13:06:34,783 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 13:06:34,822 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 13:06:34,830 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 13:06:34,842 WARN L493 CodeCheckObserver]: This program is UNSAFE, Check terminated with 17 iterations. ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] havoc main_#res;havoc main_#t~ret1, main_~input~0, main_~result~0;main_~input~0 := 10; VAL [ULTIMATE.start_main_~input~0=10] [?] CALL call main_#t~ret1 := id(main_~input~0); VAL [|id_#in~x|=10] [?] ~x := #in~x; VAL [id_~x=10, |id_#in~x|=10] [?] assume !(0 == ~x); VAL [id_~x=10, |id_#in~x|=10] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=9] [?] ~x := #in~x; VAL [id_~x=9, |id_#in~x|=9] [?] assume !(0 == ~x); VAL [id_~x=9, |id_#in~x|=9] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=8] [?] ~x := #in~x; VAL [id_~x=8, |id_#in~x|=8] [?] assume !(0 == ~x); VAL [id_~x=8, |id_#in~x|=8] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=7] [?] ~x := #in~x; VAL [id_~x=7, |id_#in~x|=7] [?] assume !(0 == ~x); VAL [id_~x=7, |id_#in~x|=7] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=6] [?] ~x := #in~x; VAL [id_~x=6, |id_#in~x|=6] [?] assume !(0 == ~x); VAL [id_~x=6, |id_#in~x|=6] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=5] [?] ~x := #in~x; VAL [id_~x=5, |id_#in~x|=5] [?] assume !(0 == ~x); VAL [id_~x=5, |id_#in~x|=5] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=4] [?] ~x := #in~x; VAL [id_~x=4, |id_#in~x|=4] [?] assume !(0 == ~x); VAL [id_~x=4, |id_#in~x|=4] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=3] [?] ~x := #in~x; VAL [id_~x=3, |id_#in~x|=3] [?] assume !(0 == ~x); VAL [id_~x=3, |id_#in~x|=3] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=2] [?] ~x := #in~x; VAL [id_~x=2, |id_#in~x|=2] [?] assume !(0 == ~x); VAL [id_~x=2, |id_#in~x|=2] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=1] [?] ~x := #in~x; VAL [id_~x=1, |id_#in~x|=1] [?] assume !(0 == ~x); VAL [id_~x=1, |id_#in~x|=1] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=0] [?] ~x := #in~x; VAL [id_~x=0, |id_#in~x|=0] [?] assume 0 == ~x;#res := 0; VAL [id_~x=0, |id_#in~x|=0, |id_#res|=0] [?] assume true; VAL [id_~x=0, |id_#in~x|=0, |id_#res|=0] [?] RET #26#return; VAL [id_~x=1, |id_#in~x|=1, |id_#t~ret0|=0] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=1, |id_#in~x|=1, |id_#res|=1] [?] assume true; VAL [id_~x=1, |id_#in~x|=1, |id_#res|=1] [?] RET #26#return; VAL [id_~x=2, |id_#in~x|=2, |id_#t~ret0|=1] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=2, |id_#in~x|=2, |id_#res|=2] [?] assume true; VAL [id_~x=2, |id_#in~x|=2, |id_#res|=2] [?] RET #26#return; VAL [id_~x=3, |id_#in~x|=3, |id_#t~ret0|=2] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=3, |id_#in~x|=3, |id_#res|=3] [?] assume true; VAL [id_~x=3, |id_#in~x|=3, |id_#res|=3] [?] RET #26#return; VAL [id_~x=4, |id_#in~x|=4, |id_#t~ret0|=3] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=4, |id_#in~x|=4, |id_#res|=4] [?] assume true; VAL [id_~x=4, |id_#in~x|=4, |id_#res|=4] [?] RET #26#return; VAL [id_~x=5, |id_#in~x|=5, |id_#t~ret0|=4] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=5, |id_#in~x|=5, |id_#res|=5] [?] assume true; VAL [id_~x=5, |id_#in~x|=5, |id_#res|=5] [?] RET #26#return; VAL [id_~x=6, |id_#in~x|=6, |id_#t~ret0|=5] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=6, |id_#in~x|=6, |id_#res|=6] [?] assume true; VAL [id_~x=6, |id_#in~x|=6, |id_#res|=6] [?] RET #26#return; VAL [id_~x=7, |id_#in~x|=7, |id_#t~ret0|=6] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=7, |id_#in~x|=7, |id_#res|=7] [?] assume true; VAL [id_~x=7, |id_#in~x|=7, |id_#res|=7] [?] RET #26#return; VAL [id_~x=8, |id_#in~x|=8, |id_#t~ret0|=7] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=8, |id_#in~x|=8, |id_#res|=8] [?] assume true; VAL [id_~x=8, |id_#in~x|=8, |id_#res|=8] [?] RET #26#return; VAL [id_~x=9, |id_#in~x|=9, |id_#t~ret0|=8] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=9, |id_#in~x|=9, |id_#res|=9] [?] assume true; VAL [id_~x=9, |id_#in~x|=9, |id_#res|=9] [?] RET #26#return; VAL [id_~x=10, |id_#in~x|=10, |id_#t~ret0|=9] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=10, |id_#in~x|=10, |id_#res|=10] [?] assume true; VAL [id_~x=10, |id_#in~x|=10, |id_#res|=10] [?] RET #24#return; VAL [ULTIMATE.start_main_~input~0=10, |ULTIMATE.start_main_#t~ret1|=10] [?] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647;main_~result~0 := main_#t~ret1;havoc main_#t~ret1; VAL [ULTIMATE.start_main_~input~0=10, ULTIMATE.start_main_~result~0=10] [?] assume 10 == main_~result~0; VAL [ULTIMATE.start_main_~input~0=10, ULTIMATE.start_main_~result~0=10] [?] assume !false; VAL [ULTIMATE.start_main_~input~0=10, ULTIMATE.start_main_~result~0=10] [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] assume !(0 == ~x); VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] assume !(0 == ~x); VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] assume !(0 == ~x); VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] assume !(0 == ~x); VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] assume !(0 == ~x); VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] assume !(0 == ~x); VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] assume !(0 == ~x); VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] assume !(0 == ~x); VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] assume !(0 == ~x); VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] assume !(0 == ~x); VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] assume 0 == ~x; [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L4-L7] ensures true; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L4-L7] ensures true; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L4-L7] ensures true; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L4-L7] ensures true; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L4-L7] ensures true; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L4-L7] ensures true; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L4-L7] ensures true; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L4-L7] ensures true; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L4-L7] ensures true; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L4-L7] ensures true; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L4-L7] ensures true; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12-L14] assume 10 == main_~result~0; VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] assume !(0 == ~x); VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] assume !(0 == ~x); VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] assume !(0 == ~x); VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] assume !(0 == ~x); VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] assume !(0 == ~x); VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] assume !(0 == ~x); VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] assume !(0 == ~x); VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] assume !(0 == ~x); VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] assume !(0 == ~x); VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] assume !(0 == ~x); VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] assume 0 == ~x; [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L4-L7] ensures true; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L4-L7] ensures true; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L4-L7] ensures true; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L4-L7] ensures true; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L4-L7] ensures true; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L4-L7] ensures true; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L4-L7] ensures true; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L4-L7] ensures true; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L4-L7] ensures true; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L4-L7] ensures true; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L4-L7] ensures true; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12-L14] assume 10 == main_~result~0; VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12] COND TRUE 10 == main_~result~0 VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12] COND TRUE 10 == main_~result~0 VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] [L10] ~input~0 := 10; [L11] CALL call #t~ret1 := id(~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call #t~ret1 := id(~input~0); [L11] assume -2147483648 <= #t~ret1 && #t~ret1 <= 2147483647; [L11] ~result~0 := #t~ret1; [L11] havoc #t~ret1; [L12] COND TRUE 10 == ~result~0 [L13] assert false; ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [L10] ~input~0 := 10; [L11] CALL call #t~ret1 := id(~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call #t~ret1 := id(~input~0); [L11] assume -2147483648 <= #t~ret1 && #t~ret1 <= 2147483647; [L11] ~result~0 := #t~ret1; [L11] havoc #t~ret1; [L12] COND TRUE 10 == ~result~0 [L13] assert false; [L10] int input = 10; [L11] CALL, EXPR id(input) VAL [\old(x)=10] [L5] COND FALSE !(x==0) VAL [\old(x)=10, x=10] [L6] CALL, EXPR id(x-1) VAL [\old(x)=9] [L5] COND FALSE !(x==0) VAL [\old(x)=9, x=9] [L6] CALL, EXPR id(x-1) VAL [\old(x)=8] [L5] COND FALSE !(x==0) VAL [\old(x)=8, x=8] [L6] CALL, EXPR id(x-1) VAL [\old(x)=7] [L5] COND FALSE !(x==0) VAL [\old(x)=7, x=7] [L6] CALL, EXPR id(x-1) VAL [\old(x)=6] [L5] COND FALSE !(x==0) VAL [\old(x)=6, x=6] [L6] CALL, EXPR id(x-1) VAL [\old(x)=5] [L5] COND FALSE !(x==0) VAL [\old(x)=5, x=5] [L6] CALL, EXPR id(x-1) VAL [\old(x)=4] [L5] COND FALSE !(x==0) VAL [\old(x)=4, x=4] [L6] CALL, EXPR id(x-1) VAL [\old(x)=3] [L5] COND FALSE !(x==0) VAL [\old(x)=3, x=3] [L6] CALL, EXPR id(x-1) VAL [\old(x)=2] [L5] COND FALSE !(x==0) VAL [\old(x)=2, x=2] [L6] CALL, EXPR id(x-1) VAL [\old(x)=1] [L5] COND FALSE !(x==0) VAL [\old(x)=1, x=1] [L6] CALL, EXPR id(x-1) VAL [\old(x)=0] [L5] COND TRUE x==0 [L5] return 0; VAL [\old(x)=0, \result=0, x=0] [L6] RET, EXPR id(x-1) VAL [\old(x)=1, id(x-1)=0, x=1] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=2, id(x-1)=1, x=2] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=3, id(x-1)=2, x=3] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=4, id(x-1)=3, x=4] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=5, id(x-1)=4, x=5] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=6, id(x-1)=5, x=6] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=7, id(x-1)=6, x=7] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=8, id(x-1)=7, x=8] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=9, id(x-1)=8, x=9] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=10, id(x-1)=9, x=10] [L6] return id(x-1) + 1; [L11] RET, EXPR id(input) [L11] int result = id(input); [L12] COND TRUE result == 10 [L13] __VERIFIER_error() ----- [2018-11-23 13:06:34,891 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.codecheck CFG 23.11 01:06:34 ImpRootNode [2018-11-23 13:06:34,891 INFO L132 PluginConnector]: ------------------------ END CodeCheck---------------------------- [2018-11-23 13:06:34,891 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 13:06:34,892 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 13:06:34,892 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 13:06:34,894 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:06:23" (3/4) ... [2018-11-23 13:06:34,896 INFO L138 WitnessPrinter]: Generating witness for reachability counterexample ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] havoc main_#res;havoc main_#t~ret1, main_~input~0, main_~result~0;main_~input~0 := 10; VAL [ULTIMATE.start_main_~input~0=10] [?] CALL call main_#t~ret1 := id(main_~input~0); VAL [|id_#in~x|=10] [?] ~x := #in~x; VAL [id_~x=10, |id_#in~x|=10] [?] assume !(0 == ~x); VAL [id_~x=10, |id_#in~x|=10] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=9] [?] ~x := #in~x; VAL [id_~x=9, |id_#in~x|=9] [?] assume !(0 == ~x); VAL [id_~x=9, |id_#in~x|=9] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=8] [?] ~x := #in~x; VAL [id_~x=8, |id_#in~x|=8] [?] assume !(0 == ~x); VAL [id_~x=8, |id_#in~x|=8] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=7] [?] ~x := #in~x; VAL [id_~x=7, |id_#in~x|=7] [?] assume !(0 == ~x); VAL [id_~x=7, |id_#in~x|=7] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=6] [?] ~x := #in~x; VAL [id_~x=6, |id_#in~x|=6] [?] assume !(0 == ~x); VAL [id_~x=6, |id_#in~x|=6] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=5] [?] ~x := #in~x; VAL [id_~x=5, |id_#in~x|=5] [?] assume !(0 == ~x); VAL [id_~x=5, |id_#in~x|=5] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=4] [?] ~x := #in~x; VAL [id_~x=4, |id_#in~x|=4] [?] assume !(0 == ~x); VAL [id_~x=4, |id_#in~x|=4] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=3] [?] ~x := #in~x; VAL [id_~x=3, |id_#in~x|=3] [?] assume !(0 == ~x); VAL [id_~x=3, |id_#in~x|=3] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=2] [?] ~x := #in~x; VAL [id_~x=2, |id_#in~x|=2] [?] assume !(0 == ~x); VAL [id_~x=2, |id_#in~x|=2] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=1] [?] ~x := #in~x; VAL [id_~x=1, |id_#in~x|=1] [?] assume !(0 == ~x); VAL [id_~x=1, |id_#in~x|=1] [?] CALL call #t~ret0 := id(~x - 1); VAL [|id_#in~x|=0] [?] ~x := #in~x; VAL [id_~x=0, |id_#in~x|=0] [?] assume 0 == ~x;#res := 0; VAL [id_~x=0, |id_#in~x|=0, |id_#res|=0] [?] assume true; VAL [id_~x=0, |id_#in~x|=0, |id_#res|=0] [?] RET #26#return; VAL [id_~x=1, |id_#in~x|=1, |id_#t~ret0|=0] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=1, |id_#in~x|=1, |id_#res|=1] [?] assume true; VAL [id_~x=1, |id_#in~x|=1, |id_#res|=1] [?] RET #26#return; VAL [id_~x=2, |id_#in~x|=2, |id_#t~ret0|=1] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=2, |id_#in~x|=2, |id_#res|=2] [?] assume true; VAL [id_~x=2, |id_#in~x|=2, |id_#res|=2] [?] RET #26#return; VAL [id_~x=3, |id_#in~x|=3, |id_#t~ret0|=2] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=3, |id_#in~x|=3, |id_#res|=3] [?] assume true; VAL [id_~x=3, |id_#in~x|=3, |id_#res|=3] [?] RET #26#return; VAL [id_~x=4, |id_#in~x|=4, |id_#t~ret0|=3] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=4, |id_#in~x|=4, |id_#res|=4] [?] assume true; VAL [id_~x=4, |id_#in~x|=4, |id_#res|=4] [?] RET #26#return; VAL [id_~x=5, |id_#in~x|=5, |id_#t~ret0|=4] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=5, |id_#in~x|=5, |id_#res|=5] [?] assume true; VAL [id_~x=5, |id_#in~x|=5, |id_#res|=5] [?] RET #26#return; VAL [id_~x=6, |id_#in~x|=6, |id_#t~ret0|=5] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=6, |id_#in~x|=6, |id_#res|=6] [?] assume true; VAL [id_~x=6, |id_#in~x|=6, |id_#res|=6] [?] RET #26#return; VAL [id_~x=7, |id_#in~x|=7, |id_#t~ret0|=6] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=7, |id_#in~x|=7, |id_#res|=7] [?] assume true; VAL [id_~x=7, |id_#in~x|=7, |id_#res|=7] [?] RET #26#return; VAL [id_~x=8, |id_#in~x|=8, |id_#t~ret0|=7] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=8, |id_#in~x|=8, |id_#res|=8] [?] assume true; VAL [id_~x=8, |id_#in~x|=8, |id_#res|=8] [?] RET #26#return; VAL [id_~x=9, |id_#in~x|=9, |id_#t~ret0|=8] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=9, |id_#in~x|=9, |id_#res|=9] [?] assume true; VAL [id_~x=9, |id_#in~x|=9, |id_#res|=9] [?] RET #26#return; VAL [id_~x=10, |id_#in~x|=10, |id_#t~ret0|=9] [?] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647;#res := 1 + #t~ret0;havoc #t~ret0; VAL [id_~x=10, |id_#in~x|=10, |id_#res|=10] [?] assume true; VAL [id_~x=10, |id_#in~x|=10, |id_#res|=10] [?] RET #24#return; VAL [ULTIMATE.start_main_~input~0=10, |ULTIMATE.start_main_#t~ret1|=10] [?] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647;main_~result~0 := main_#t~ret1;havoc main_#t~ret1; VAL [ULTIMATE.start_main_~input~0=10, ULTIMATE.start_main_~result~0=10] [?] assume 10 == main_~result~0; VAL [ULTIMATE.start_main_~input~0=10, ULTIMATE.start_main_~result~0=10] [?] assume !false; VAL [ULTIMATE.start_main_~input~0=10, ULTIMATE.start_main_~result~0=10] [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] assume !(0 == ~x); VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] assume !(0 == ~x); VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] assume !(0 == ~x); VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] assume !(0 == ~x); VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] assume !(0 == ~x); VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] assume !(0 == ~x); VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] assume !(0 == ~x); VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] assume !(0 == ~x); VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] assume !(0 == ~x); VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] assume !(0 == ~x); VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] assume 0 == ~x; [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L4-L7] ensures true; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L4-L7] ensures true; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L4-L7] ensures true; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L4-L7] ensures true; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L4-L7] ensures true; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L4-L7] ensures true; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L4-L7] ensures true; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L4-L7] ensures true; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L4-L7] ensures true; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L4-L7] ensures true; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L4-L7] ensures true; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12-L14] assume 10 == main_~result~0; VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] assume !(0 == ~x); VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] assume !(0 == ~x); VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] assume !(0 == ~x); VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] assume !(0 == ~x); VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] assume !(0 == ~x); VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] assume !(0 == ~x); VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] assume !(0 == ~x); VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] assume !(0 == ~x); VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] assume !(0 == ~x); VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] assume !(0 == ~x); VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] assume 0 == ~x; [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L4-L7] ensures true; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L4-L7] ensures true; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L4-L7] ensures true; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L4-L7] ensures true; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L4-L7] ensures true; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L4-L7] ensures true; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L4-L7] ensures true; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L4-L7] ensures true; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L4-L7] ensures true; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L4-L7] ensures true; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L4-L7] ensures true; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12-L14] assume 10 == main_~result~0; VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12] COND TRUE 10 == main_~result~0 VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] havoc main_#res; [?] havoc main_#t~ret1, main_~input~0, main_~result~0; [L10] main_~input~0 := 10; VAL [main_~input~0=10] [L11] CALL call main_#t~ret1 := id(main_~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call main_#t~ret1 := id(main_~input~0); VAL [main_#t~ret1=10, main_~input~0=10] [L11] assume -2147483648 <= main_#t~ret1 && main_#t~ret1 <= 2147483647; [L11] main_~result~0 := main_#t~ret1; [L11] havoc main_#t~ret1; VAL [main_~input~0=10, main_~result~0=10] [L12] COND TRUE 10 == main_~result~0 VAL [main_~input~0=10, main_~result~0=10] [L13] assert false; VAL [main_~input~0=10, main_~result~0=10] [L10] ~input~0 := 10; [L11] CALL call #t~ret1 := id(~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call #t~ret1 := id(~input~0); [L11] assume -2147483648 <= #t~ret1 && #t~ret1 <= 2147483647; [L11] ~result~0 := #t~ret1; [L11] havoc #t~ret1; [L12] COND TRUE 10 == ~result~0 [L13] assert false; ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [L10] ~input~0 := 10; [L11] CALL call #t~ret1 := id(~input~0); VAL [#in~x=10] [L4-L7] ~x := #in~x; VAL [#in~x=10, ~x=10] [L5] COND FALSE !(0 == ~x) VAL [#in~x=10, ~x=10] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=9] [L4-L7] ~x := #in~x; VAL [#in~x=9, ~x=9] [L5] COND FALSE !(0 == ~x) VAL [#in~x=9, ~x=9] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=8] [L4-L7] ~x := #in~x; VAL [#in~x=8, ~x=8] [L5] COND FALSE !(0 == ~x) VAL [#in~x=8, ~x=8] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=7] [L4-L7] ~x := #in~x; VAL [#in~x=7, ~x=7] [L5] COND FALSE !(0 == ~x) VAL [#in~x=7, ~x=7] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=6] [L4-L7] ~x := #in~x; VAL [#in~x=6, ~x=6] [L5] COND FALSE !(0 == ~x) VAL [#in~x=6, ~x=6] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=5] [L4-L7] ~x := #in~x; VAL [#in~x=5, ~x=5] [L5] COND FALSE !(0 == ~x) VAL [#in~x=5, ~x=5] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=4] [L4-L7] ~x := #in~x; VAL [#in~x=4, ~x=4] [L5] COND FALSE !(0 == ~x) VAL [#in~x=4, ~x=4] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=3] [L4-L7] ~x := #in~x; VAL [#in~x=3, ~x=3] [L5] COND FALSE !(0 == ~x) VAL [#in~x=3, ~x=3] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=2] [L4-L7] ~x := #in~x; VAL [#in~x=2, ~x=2] [L5] COND FALSE !(0 == ~x) VAL [#in~x=2, ~x=2] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=1] [L4-L7] ~x := #in~x; VAL [#in~x=1, ~x=1] [L5] COND FALSE !(0 == ~x) VAL [#in~x=1, ~x=1] [L6] CALL call #t~ret0 := id(~x - 1); VAL [#in~x=0] [L4-L7] ~x := #in~x; VAL [#in~x=0, ~x=0] [L5] COND TRUE 0 == ~x [L5] #res := 0; VAL [#in~x=0, #res=0, ~x=0] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=1, #t~ret0=0, ~x=1] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=1, #res=1, ~x=1] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=2, #t~ret0=1, ~x=2] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=2, #res=2, ~x=2] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=3, #t~ret0=2, ~x=3] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=3, #res=3, ~x=3] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=4, #t~ret0=3, ~x=4] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=4, #res=4, ~x=4] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=5, #t~ret0=4, ~x=5] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=5, #res=5, ~x=5] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=6, #t~ret0=5, ~x=6] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=6, #res=6, ~x=6] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=7, #t~ret0=6, ~x=7] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=7, #res=7, ~x=7] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=8, #t~ret0=7, ~x=8] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=8, #res=8, ~x=8] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=9, #t~ret0=8, ~x=9] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=9, #res=9, ~x=9] [L6] RET call #t~ret0 := id(~x - 1); VAL [#in~x=10, #t~ret0=9, ~x=10] [L6] assume -2147483648 <= #t~ret0 && #t~ret0 <= 2147483647; [L6] #res := 1 + #t~ret0; [L6] havoc #t~ret0; VAL [#in~x=10, #res=10, ~x=10] [L11] RET call #t~ret1 := id(~input~0); [L11] assume -2147483648 <= #t~ret1 && #t~ret1 <= 2147483647; [L11] ~result~0 := #t~ret1; [L11] havoc #t~ret1; [L12] COND TRUE 10 == ~result~0 [L13] assert false; [L10] int input = 10; [L11] CALL, EXPR id(input) VAL [\old(x)=10] [L5] COND FALSE !(x==0) VAL [\old(x)=10, x=10] [L6] CALL, EXPR id(x-1) VAL [\old(x)=9] [L5] COND FALSE !(x==0) VAL [\old(x)=9, x=9] [L6] CALL, EXPR id(x-1) VAL [\old(x)=8] [L5] COND FALSE !(x==0) VAL [\old(x)=8, x=8] [L6] CALL, EXPR id(x-1) VAL [\old(x)=7] [L5] COND FALSE !(x==0) VAL [\old(x)=7, x=7] [L6] CALL, EXPR id(x-1) VAL [\old(x)=6] [L5] COND FALSE !(x==0) VAL [\old(x)=6, x=6] [L6] CALL, EXPR id(x-1) VAL [\old(x)=5] [L5] COND FALSE !(x==0) VAL [\old(x)=5, x=5] [L6] CALL, EXPR id(x-1) VAL [\old(x)=4] [L5] COND FALSE !(x==0) VAL [\old(x)=4, x=4] [L6] CALL, EXPR id(x-1) VAL [\old(x)=3] [L5] COND FALSE !(x==0) VAL [\old(x)=3, x=3] [L6] CALL, EXPR id(x-1) VAL [\old(x)=2] [L5] COND FALSE !(x==0) VAL [\old(x)=2, x=2] [L6] CALL, EXPR id(x-1) VAL [\old(x)=1] [L5] COND FALSE !(x==0) VAL [\old(x)=1, x=1] [L6] CALL, EXPR id(x-1) VAL [\old(x)=0] [L5] COND TRUE x==0 [L5] return 0; VAL [\old(x)=0, \result=0, x=0] [L6] RET, EXPR id(x-1) VAL [\old(x)=1, id(x-1)=0, x=1] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=2, id(x-1)=1, x=2] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=3, id(x-1)=2, x=3] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=4, id(x-1)=3, x=4] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=5, id(x-1)=4, x=5] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=6, id(x-1)=5, x=6] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=7, id(x-1)=6, x=7] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=8, id(x-1)=7, x=8] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=9, id(x-1)=8, x=9] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=10, id(x-1)=9, x=10] [L6] return id(x-1) + 1; [L11] RET, EXPR id(input) [L11] int result = id(input); [L12] COND TRUE result == 10 [L13] __VERIFIER_error() ----- [2018-11-23 13:06:34,971 INFO L145 WitnessManager]: Wrote witness to /tmp/vcloud-vcloud-master/worker/working_dir_f8b88bad-c4e0-4c63-889b-7788d67aa6c8/bin-2019/ukojak/witness.graphml [2018-11-23 13:06:34,971 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 13:06:34,972 INFO L168 Benchmark]: Toolchain (without parser) took 12188.83 ms. Allocated memory was 1.0 GB in the beginning and 1.4 GB in the end (delta: 335.0 MB). Free memory was 959.2 MB in the beginning and 1.1 GB in the end (delta: -137.8 MB). Peak memory consumption was 197.2 MB. Max. memory is 11.5 GB. [2018-11-23 13:06:34,973 INFO L168 Benchmark]: CDTParser took 0.10 ms. Allocated memory is still 1.0 GB. Free memory is still 985.5 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 13:06:34,973 INFO L168 Benchmark]: CACSL2BoogieTranslator took 134.99 ms. Allocated memory is still 1.0 GB. Free memory was 959.2 MB in the beginning and 948.5 MB in the end (delta: 10.7 MB). Peak memory consumption was 10.7 MB. Max. memory is 11.5 GB. [2018-11-23 13:06:34,973 INFO L168 Benchmark]: Boogie Procedure Inliner took 23.51 ms. Allocated memory is still 1.0 GB. Free memory was 948.5 MB in the beginning and 945.8 MB in the end (delta: 2.7 MB). Peak memory consumption was 2.7 MB. Max. memory is 11.5 GB. [2018-11-23 13:06:34,974 INFO L168 Benchmark]: Boogie Preprocessor took 12.59 ms. Allocated memory is still 1.0 GB. Free memory is still 945.8 MB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 13:06:34,974 INFO L168 Benchmark]: RCFGBuilder took 167.22 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 136.8 MB). Free memory was 945.8 MB in the beginning and 1.1 GB in the end (delta: -179.5 MB). Peak memory consumption was 14.5 MB. Max. memory is 11.5 GB. [2018-11-23 13:06:34,975 INFO L168 Benchmark]: CodeCheck took 11768.37 ms. Allocated memory was 1.2 GB in the beginning and 1.4 GB in the end (delta: 198.2 MB). Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 28.2 MB). Peak memory consumption was 226.4 MB. Max. memory is 11.5 GB. [2018-11-23 13:06:34,975 INFO L168 Benchmark]: Witness Printer took 79.63 ms. Allocated memory is still 1.4 GB. Free memory is still 1.1 GB. There was no memory consumed. Max. memory is 11.5 GB. [2018-11-23 13:06:34,978 INFO L336 ainManager$Toolchain]: ####################### End [Toolchain 1] ####################### --- Results --- * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.codecheck: - StatisticsResult: Ultimate CodeCheck benchmark data CFG has 2 procedures, 15 locations, 1 error locations. UNSAFE Result, 11.6s OverallTime, 17 OverallIterations, 0 TraceHistogramMax, 0.0s AutomataDifference, 0.0s DeadEndRemovalTime, 0.0s HoareAnnotationTime, HoareTripleCheckerStatistics: 458752 SDtfs, 456844 SDslu, 749848 SDs, 0 SdLazy, 3010362 SolverSat, 829606 SolverUnsat, 0 SolverUnknown, 0 SolverNotchecked, 7.1s Time, PredicateUnifierStatistics: 0 DeclaredPredicates, 8942 GetRequests, 8255 SyntacticMatches, 369 SemanticMatches, 318 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 41559 ImplicationChecksByTransitivity, 9.9s Time, 0.0s BasicInterpolantAutomatonTime, BiggestAbstraction: size=-1occurred in iteration=-1, traceCheckStatistics: 0.0s SsaConstructionTime, 0.1s SatisfiabilityAnalysisTime, 1.2s InterpolantComputationTime, 759 NumberOfCodeBlocks, 759 NumberOfCodeBlocksAsserted, 17 NumberOfCheckSat, 674 ConstructedInterpolants, 0 QuantifiedInterpolants, 81784 SizeOfPredicates, 0 NumberOfNonLiveVariables, 0 ConjunctsInSsa, 0 ConjunctsInUnsatCore, 16 InterpolantComputations, 1 PerfectInterpolantSequences, 1028/2056 InterpolantCoveringCapability, InterpolantConsolidationStatistics: No data available, PathInvariantsStatistics: No data available, 0/0 InterpolantCoveringCapability, TotalInterpolationStatistics: No data available, 0.0s AbstIntTime, 0 AbstIntIterations, 0 AbstIntStrong, NaN AbsIntWeakeningRatio, NaN AbsIntAvgWeakeningVarsNumRemoved, NaN AbsIntAvgWeakenedConjuncts, 0.0s DumpTime, AutomataMinimizationStatistics: No data available, HoareAnnotationStatistics: No data available, RefinementEngineStatistics: No data available, ReuseStatistics: No data available - CounterExampleResult [Line: 13]: a call of __VERIFIER_error() is reachable a call of __VERIFIER_error() is reachable We found a FailurePath: [L10] int input = 10; [L11] CALL, EXPR id(input) VAL [\old(x)=10] [L5] COND FALSE !(x==0) VAL [\old(x)=10, x=10] [L6] CALL, EXPR id(x-1) VAL [\old(x)=9] [L5] COND FALSE !(x==0) VAL [\old(x)=9, x=9] [L6] CALL, EXPR id(x-1) VAL [\old(x)=8] [L5] COND FALSE !(x==0) VAL [\old(x)=8, x=8] [L6] CALL, EXPR id(x-1) VAL [\old(x)=7] [L5] COND FALSE !(x==0) VAL [\old(x)=7, x=7] [L6] CALL, EXPR id(x-1) VAL [\old(x)=6] [L5] COND FALSE !(x==0) VAL [\old(x)=6, x=6] [L6] CALL, EXPR id(x-1) VAL [\old(x)=5] [L5] COND FALSE !(x==0) VAL [\old(x)=5, x=5] [L6] CALL, EXPR id(x-1) VAL [\old(x)=4] [L5] COND FALSE !(x==0) VAL [\old(x)=4, x=4] [L6] CALL, EXPR id(x-1) VAL [\old(x)=3] [L5] COND FALSE !(x==0) VAL [\old(x)=3, x=3] [L6] CALL, EXPR id(x-1) VAL [\old(x)=2] [L5] COND FALSE !(x==0) VAL [\old(x)=2, x=2] [L6] CALL, EXPR id(x-1) VAL [\old(x)=1] [L5] COND FALSE !(x==0) VAL [\old(x)=1, x=1] [L6] CALL, EXPR id(x-1) VAL [\old(x)=0] [L5] COND TRUE x==0 [L5] return 0; VAL [\old(x)=0, \result=0, x=0] [L6] RET, EXPR id(x-1) VAL [\old(x)=1, id(x-1)=0, x=1] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=2, id(x-1)=1, x=2] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=3, id(x-1)=2, x=3] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=4, id(x-1)=3, x=4] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=5, id(x-1)=4, x=5] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=6, id(x-1)=5, x=6] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=7, id(x-1)=6, x=7] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=8, id(x-1)=7, x=8] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=9, id(x-1)=8, x=9] [L6] return id(x-1) + 1; [L6] RET, EXPR id(x-1) VAL [\old(x)=10, id(x-1)=9, x=10] [L6] return id(x-1) + 1; [L11] RET, EXPR id(input) [L11] int result = id(input); [L12] COND TRUE result == 10 [L13] __VERIFIER_error() * Results from de.uni_freiburg.informatik.ultimate.core: - StatisticsResult: Toolchain Benchmarks Benchmark results are: * CDTParser took 0.10 ms. Allocated memory is still 1.0 GB. Free memory is still 985.5 MB. There was no memory consumed. Max. memory is 11.5 GB. * CACSL2BoogieTranslator took 134.99 ms. Allocated memory is still 1.0 GB. Free memory was 959.2 MB in the beginning and 948.5 MB in the end (delta: 10.7 MB). Peak memory consumption was 10.7 MB. Max. memory is 11.5 GB. * Boogie Procedure Inliner took 23.51 ms. Allocated memory is still 1.0 GB. Free memory was 948.5 MB in the beginning and 945.8 MB in the end (delta: 2.7 MB). Peak memory consumption was 2.7 MB. Max. memory is 11.5 GB. * Boogie Preprocessor took 12.59 ms. Allocated memory is still 1.0 GB. Free memory is still 945.8 MB. There was no memory consumed. Max. memory is 11.5 GB. * RCFGBuilder took 167.22 ms. Allocated memory was 1.0 GB in the beginning and 1.2 GB in the end (delta: 136.8 MB). Free memory was 945.8 MB in the beginning and 1.1 GB in the end (delta: -179.5 MB). Peak memory consumption was 14.5 MB. Max. memory is 11.5 GB. * CodeCheck took 11768.37 ms. Allocated memory was 1.2 GB in the beginning and 1.4 GB in the end (delta: 198.2 MB). Free memory was 1.1 GB in the beginning and 1.1 GB in the end (delta: 28.2 MB). Peak memory consumption was 226.4 MB. Max. memory is 11.5 GB. * Witness Printer took 79.63 ms. Allocated memory is still 1.4 GB. Free memory is still 1.1 GB. There was no memory consumed. Max. memory is 11.5 GB. RESULT: Ultimate proved your program to be incorrect! Received shutdown request...