java -ea -Xmx8000000000 -jar /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -data @noDefault -ultimatedata /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data -tc ../../../trunk/examples/toolchains/AutomizerCInline_WitnessPrinter.xml -s ../../../trunk/examples/settings/default/automizer/svcomp-Reach-32bit-Automizer_Bitvector.epf -i ../../../trunk/examples/svcomp/reducercommutativity/rangesum_false-unreach-call_true-termination.i -------------------------------------------------------------------------------- This is Ultimate 0.1.23-61f4311 [2018-11-23 10:20:35,243 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 10:20:35,246 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 10:20:35,262 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 10:20:35,263 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 10:20:35,265 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 10:20:35,266 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 10:20:35,269 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 10:20:35,272 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 10:20:35,273 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 10:20:35,283 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 10:20:35,283 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 10:20:35,284 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 10:20:35,286 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 10:20:35,289 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 10:20:35,291 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 10:20:35,291 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 10:20:35,296 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 10:20:35,302 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 10:20:35,306 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 10:20:35,307 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 10:20:35,309 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 10:20:35,311 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 10:20:35,311 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 10:20:35,311 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 10:20:35,314 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 10:20:35,315 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 10:20:35,316 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 10:20:35,316 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 10:20:35,317 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 10:20:35,318 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 10:20:35,318 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 10:20:35,319 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 10:20:35,319 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 10:20:35,320 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 10:20:35,320 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 10:20:35,321 INFO L98 SettingsManager]: Beginning loading settings from /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/../../../trunk/examples/settings/default/automizer/svcomp-Reach-32bit-Automizer_Bitvector.epf [2018-11-23 10:20:35,336 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 10:20:35,336 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 10:20:35,337 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 10:20:35,337 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 10:20:35,338 INFO L131 SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults: [2018-11-23 10:20:35,338 INFO L133 SettingsManager]: * Create parallel compositions if possible=false [2018-11-23 10:20:35,338 INFO L133 SettingsManager]: * Use SBE=true [2018-11-23 10:20:35,338 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 10:20:35,338 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 10:20:35,339 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 10:20:35,339 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 10:20:35,339 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 10:20:35,339 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 10:20:35,339 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 10:20:35,339 INFO L133 SettingsManager]: * Use bitvectors instead of ints=true [2018-11-23 10:20:35,340 INFO L133 SettingsManager]: * Memory model=HoenickeLindenmann_4ByteResolution [2018-11-23 10:20:35,340 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 10:20:35,340 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 10:20:35,340 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 10:20:35,340 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 10:20:35,341 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 10:20:35,341 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 10:20:35,341 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 10:20:35,341 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 10:20:35,341 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 10:20:35,342 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 10:20:35,342 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 10:20:35,343 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 10:20:35,343 INFO L133 SettingsManager]: * Trace refinement strategy=WOLF [2018-11-23 10:20:35,343 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 10:20:35,343 INFO L133 SettingsManager]: * Command for external solver=cvc4nyu --tear-down-incremental --rewrite-divk --print-success --lang smt [2018-11-23 10:20:35,343 INFO L133 SettingsManager]: * Logic for external solver=AUFBV [2018-11-23 10:20:35,346 INFO L133 SettingsManager]: * Compute Hoare Annotation of negated interpolant automaton, abstraction and CFG=true [2018-11-23 10:20:35,392 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 10:20:35,409 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 10:20:35,414 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 10:20:35,416 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 10:20:35,416 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 10:20:35,417 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/../../../trunk/examples/svcomp/reducercommutativity/rangesum_false-unreach-call_true-termination.i [2018-11-23 10:20:35,488 INFO L221 CDTParser]: Created temporary CDT project at /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/998e6d37e/ee50be662c4d4ee98bfe2833b006026b/FLAGd05eb2f05 [2018-11-23 10:20:35,981 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 10:20:35,982 INFO L161 CDTParser]: Scanning /storage/repos/ultimate/trunk/examples/svcomp/reducercommutativity/rangesum_false-unreach-call_true-termination.i [2018-11-23 10:20:35,989 INFO L355 CDTParser]: About to delete temporary CDT project at /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/998e6d37e/ee50be662c4d4ee98bfe2833b006026b/FLAGd05eb2f05 [2018-11-23 10:20:36,328 INFO L363 CDTParser]: Successfully deleted /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/998e6d37e/ee50be662c4d4ee98bfe2833b006026b [2018-11-23 10:20:36,340 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 10:20:36,342 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 10:20:36,343 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 10:20:36,343 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 10:20:36,348 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 10:20:36,350 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,354 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@179e68d9 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36, skipping insertion in model container [2018-11-23 10:20:36,354 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,365 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 10:20:36,390 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 10:20:36,667 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 10:20:36,687 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 10:20:36,717 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 10:20:36,736 INFO L195 MainTranslator]: Completed translation [2018-11-23 10:20:36,736 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36 WrapperNode [2018-11-23 10:20:36,737 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 10:20:36,737 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 10:20:36,738 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 10:20:36,738 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 10:20:36,748 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,759 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,768 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 10:20:36,768 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 10:20:36,768 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 10:20:36,768 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 10:20:36,780 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,780 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,784 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,784 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,801 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,809 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,812 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... [2018-11-23 10:20:36,815 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 10:20:36,815 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 10:20:36,816 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 10:20:36,816 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 10:20:36,817 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (1/1) ... No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/z3 Starting monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 1 with z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 10:20:36,955 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 10:20:36,956 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 10:20:36,956 INFO L130 BoogieDeclarations]: Found specification of procedure #Ultimate.alloc [2018-11-23 10:20:36,956 INFO L130 BoogieDeclarations]: Found specification of procedure read~intINTTYPE4 [2018-11-23 10:20:36,956 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 10:20:36,956 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 10:20:36,956 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 10:20:36,957 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 10:20:36,957 INFO L130 BoogieDeclarations]: Found specification of procedure rangesum [2018-11-23 10:20:36,957 INFO L138 BoogieDeclarations]: Found implementation of procedure rangesum [2018-11-23 10:20:36,957 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.dealloc [2018-11-23 10:20:36,957 INFO L130 BoogieDeclarations]: Found specification of procedure write~intINTTYPE4 [2018-11-23 10:20:36,957 INFO L130 BoogieDeclarations]: Found specification of procedure init_nondet [2018-11-23 10:20:36,958 INFO L138 BoogieDeclarations]: Found implementation of procedure init_nondet [2018-11-23 10:20:38,201 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 10:20:38,202 INFO L280 CfgBuilder]: Removed 3 assue(true) statements. [2018-11-23 10:20:38,203 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 10:20:38 BoogieIcfgContainer [2018-11-23 10:20:38,203 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 10:20:38,204 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 10:20:38,205 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 10:20:38,208 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 10:20:38,209 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 10:20:36" (1/3) ... [2018-11-23 10:20:38,211 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@5bacd88f and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 10:20:38, skipping insertion in model container [2018-11-23 10:20:38,211 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 10:20:36" (2/3) ... [2018-11-23 10:20:38,212 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@5bacd88f and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 10:20:38, skipping insertion in model container [2018-11-23 10:20:38,212 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 10:20:38" (3/3) ... [2018-11-23 10:20:38,215 INFO L112 eAbstractionObserver]: Analyzing ICFG rangesum_false-unreach-call_true-termination.i [2018-11-23 10:20:38,227 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 10:20:38,242 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 10:20:38,262 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 10:20:38,306 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 10:20:38,307 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 10:20:38,307 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 10:20:38,307 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 10:20:38,308 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 10:20:38,308 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 10:20:38,308 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 10:20:38,308 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 10:20:38,308 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 10:20:38,330 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states. [2018-11-23 10:20:38,339 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 39 [2018-11-23 10:20:38,339 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:38,341 INFO L402 BasicCegarLoop]: trace histogram [3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:38,344 INFO L423 AbstractCegarLoop]: === Iteration 1 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:38,351 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:38,351 INFO L82 PathProgramCache]: Analyzing trace with hash -1377249276, now seen corresponding path program 1 times [2018-11-23 10:20:38,357 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:38,358 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 2 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 2 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:38,387 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 10:20:38,472 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:38,510 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:38,515 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:38,678 INFO L256 TraceCheckUtils]: 0: Hoare triple {42#true} call ULTIMATE.init(); {42#true} is VALID [2018-11-23 10:20:38,682 INFO L273 TraceCheckUtils]: 1: Hoare triple {42#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {42#true} is VALID [2018-11-23 10:20:38,683 INFO L273 TraceCheckUtils]: 2: Hoare triple {42#true} assume true; {42#true} is VALID [2018-11-23 10:20:38,683 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {42#true} {42#true} #85#return; {42#true} is VALID [2018-11-23 10:20:38,683 INFO L256 TraceCheckUtils]: 4: Hoare triple {42#true} call #t~ret13 := main(); {42#true} is VALID [2018-11-23 10:20:38,684 INFO L273 TraceCheckUtils]: 5: Hoare triple {42#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {42#true} is VALID [2018-11-23 10:20:38,684 INFO L273 TraceCheckUtils]: 6: Hoare triple {42#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {42#true} is VALID [2018-11-23 10:20:38,684 INFO L256 TraceCheckUtils]: 7: Hoare triple {42#true} call init_nondet(~#x~0.base, ~#x~0.offset); {42#true} is VALID [2018-11-23 10:20:38,685 INFO L273 TraceCheckUtils]: 8: Hoare triple {42#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {42#true} is VALID [2018-11-23 10:20:38,692 INFO L273 TraceCheckUtils]: 9: Hoare triple {42#true} assume !true; {43#false} is VALID [2018-11-23 10:20:38,692 INFO L273 TraceCheckUtils]: 10: Hoare triple {43#false} assume true; {43#false} is VALID [2018-11-23 10:20:38,693 INFO L268 TraceCheckUtils]: 11: Hoare quadruple {43#false} {42#true} #89#return; {43#false} is VALID [2018-11-23 10:20:38,693 INFO L273 TraceCheckUtils]: 12: Hoare triple {43#false} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {43#false} is VALID [2018-11-23 10:20:38,693 INFO L256 TraceCheckUtils]: 13: Hoare triple {43#false} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {43#false} is VALID [2018-11-23 10:20:38,694 INFO L273 TraceCheckUtils]: 14: Hoare triple {43#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {43#false} is VALID [2018-11-23 10:20:38,694 INFO L273 TraceCheckUtils]: 15: Hoare triple {43#false} assume !~bvslt32(~i~1, ~N~0); {43#false} is VALID [2018-11-23 10:20:38,694 INFO L273 TraceCheckUtils]: 16: Hoare triple {43#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {43#false} is VALID [2018-11-23 10:20:38,695 INFO L273 TraceCheckUtils]: 17: Hoare triple {43#false} assume true; {43#false} is VALID [2018-11-23 10:20:38,695 INFO L268 TraceCheckUtils]: 18: Hoare quadruple {43#false} {43#false} #91#return; {43#false} is VALID [2018-11-23 10:20:38,696 INFO L273 TraceCheckUtils]: 19: Hoare triple {43#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {43#false} is VALID [2018-11-23 10:20:38,696 INFO L256 TraceCheckUtils]: 20: Hoare triple {43#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {43#false} is VALID [2018-11-23 10:20:38,696 INFO L273 TraceCheckUtils]: 21: Hoare triple {43#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {43#false} is VALID [2018-11-23 10:20:38,697 INFO L273 TraceCheckUtils]: 22: Hoare triple {43#false} assume !~bvslt32(~i~1, ~N~0); {43#false} is VALID [2018-11-23 10:20:38,697 INFO L273 TraceCheckUtils]: 23: Hoare triple {43#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {43#false} is VALID [2018-11-23 10:20:38,697 INFO L273 TraceCheckUtils]: 24: Hoare triple {43#false} assume true; {43#false} is VALID [2018-11-23 10:20:38,698 INFO L268 TraceCheckUtils]: 25: Hoare quadruple {43#false} {43#false} #93#return; {43#false} is VALID [2018-11-23 10:20:38,698 INFO L273 TraceCheckUtils]: 26: Hoare triple {43#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {43#false} is VALID [2018-11-23 10:20:38,699 INFO L273 TraceCheckUtils]: 27: Hoare triple {43#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {43#false} is VALID [2018-11-23 10:20:38,699 INFO L273 TraceCheckUtils]: 28: Hoare triple {43#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {43#false} is VALID [2018-11-23 10:20:38,699 INFO L256 TraceCheckUtils]: 29: Hoare triple {43#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {43#false} is VALID [2018-11-23 10:20:38,700 INFO L273 TraceCheckUtils]: 30: Hoare triple {43#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {43#false} is VALID [2018-11-23 10:20:38,700 INFO L273 TraceCheckUtils]: 31: Hoare triple {43#false} assume !~bvslt32(~i~1, ~N~0); {43#false} is VALID [2018-11-23 10:20:38,700 INFO L273 TraceCheckUtils]: 32: Hoare triple {43#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {43#false} is VALID [2018-11-23 10:20:38,701 INFO L273 TraceCheckUtils]: 33: Hoare triple {43#false} assume true; {43#false} is VALID [2018-11-23 10:20:38,701 INFO L268 TraceCheckUtils]: 34: Hoare quadruple {43#false} {43#false} #95#return; {43#false} is VALID [2018-11-23 10:20:38,702 INFO L273 TraceCheckUtils]: 35: Hoare triple {43#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {43#false} is VALID [2018-11-23 10:20:38,702 INFO L273 TraceCheckUtils]: 36: Hoare triple {43#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {43#false} is VALID [2018-11-23 10:20:38,702 INFO L273 TraceCheckUtils]: 37: Hoare triple {43#false} assume !false; {43#false} is VALID [2018-11-23 10:20:38,712 INFO L134 CoverageAnalysis]: Checked inductivity of 15 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 15 trivial. 0 not checked. [2018-11-23 10:20:38,712 INFO L312 TraceCheckSpWp]: Omiting computation of backward sequence because forward sequence was already perfect [2018-11-23 10:20:38,722 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 10:20:38,723 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [2] imperfect sequences [] total 2 [2018-11-23 10:20:38,728 INFO L78 Accepts]: Start accepts. Automaton has 2 states. Word has length 38 [2018-11-23 10:20:38,732 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:38,736 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 2 states. [2018-11-23 10:20:38,957 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 30 edges. 30 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:38,957 INFO L459 AbstractCegarLoop]: Interpolant automaton has 2 states [2018-11-23 10:20:38,965 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 2 interpolants. [2018-11-23 10:20:38,966 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=1, Invalid=1, Unknown=0, NotChecked=0, Total=2 [2018-11-23 10:20:38,969 INFO L87 Difference]: Start difference. First operand 39 states. Second operand 2 states. [2018-11-23 10:20:39,296 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:39,297 INFO L93 Difference]: Finished difference Result 67 states and 89 transitions. [2018-11-23 10:20:39,297 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 2 states. [2018-11-23 10:20:39,297 INFO L78 Accepts]: Start accepts. Automaton has 2 states. Word has length 38 [2018-11-23 10:20:39,297 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:20:39,299 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 2 states. [2018-11-23 10:20:39,312 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 2 states to 2 states and 89 transitions. [2018-11-23 10:20:39,312 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 2 states. [2018-11-23 10:20:39,319 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 2 states to 2 states and 89 transitions. [2018-11-23 10:20:39,319 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 2 states and 89 transitions. [2018-11-23 10:20:40,280 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 89 edges. 89 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:40,297 INFO L225 Difference]: With dead ends: 67 [2018-11-23 10:20:40,297 INFO L226 Difference]: Without dead ends: 33 [2018-11-23 10:20:40,302 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 37 GetRequests, 37 SyntacticMatches, 0 SemanticMatches, 0 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=1, Invalid=1, Unknown=0, NotChecked=0, Total=2 [2018-11-23 10:20:40,319 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 33 states. [2018-11-23 10:20:40,350 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 33 to 33. [2018-11-23 10:20:40,351 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:20:40,351 INFO L82 GeneralOperation]: Start isEquivalent. First operand 33 states. Second operand 33 states. [2018-11-23 10:20:40,352 INFO L74 IsIncluded]: Start isIncluded. First operand 33 states. Second operand 33 states. [2018-11-23 10:20:40,352 INFO L87 Difference]: Start difference. First operand 33 states. Second operand 33 states. [2018-11-23 10:20:40,361 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:40,362 INFO L93 Difference]: Finished difference Result 33 states and 39 transitions. [2018-11-23 10:20:40,362 INFO L276 IsEmpty]: Start isEmpty. Operand 33 states and 39 transitions. [2018-11-23 10:20:40,363 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:40,363 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:40,364 INFO L74 IsIncluded]: Start isIncluded. First operand 33 states. Second operand 33 states. [2018-11-23 10:20:40,364 INFO L87 Difference]: Start difference. First operand 33 states. Second operand 33 states. [2018-11-23 10:20:40,369 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:40,369 INFO L93 Difference]: Finished difference Result 33 states and 39 transitions. [2018-11-23 10:20:40,370 INFO L276 IsEmpty]: Start isEmpty. Operand 33 states and 39 transitions. [2018-11-23 10:20:40,371 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:40,371 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:40,371 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:20:40,371 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:20:40,372 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 33 states. [2018-11-23 10:20:40,375 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 33 states to 33 states and 39 transitions. [2018-11-23 10:20:40,377 INFO L78 Accepts]: Start accepts. Automaton has 33 states and 39 transitions. Word has length 38 [2018-11-23 10:20:40,378 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:20:40,378 INFO L480 AbstractCegarLoop]: Abstraction has 33 states and 39 transitions. [2018-11-23 10:20:40,378 INFO L481 AbstractCegarLoop]: Interpolant automaton has 2 states. [2018-11-23 10:20:40,378 INFO L276 IsEmpty]: Start isEmpty. Operand 33 states and 39 transitions. [2018-11-23 10:20:40,380 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 39 [2018-11-23 10:20:40,380 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:40,380 INFO L402 BasicCegarLoop]: trace histogram [3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:40,381 INFO L423 AbstractCegarLoop]: === Iteration 2 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:40,381 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:40,381 INFO L82 PathProgramCache]: Analyzing trace with hash -1240892162, now seen corresponding path program 1 times [2018-11-23 10:20:40,382 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:40,382 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 3 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 3 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:40,405 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 10:20:40,454 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:40,498 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:40,500 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:40,654 INFO L256 TraceCheckUtils]: 0: Hoare triple {355#true} call ULTIMATE.init(); {355#true} is VALID [2018-11-23 10:20:40,655 INFO L273 TraceCheckUtils]: 1: Hoare triple {355#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {355#true} is VALID [2018-11-23 10:20:40,655 INFO L273 TraceCheckUtils]: 2: Hoare triple {355#true} assume true; {355#true} is VALID [2018-11-23 10:20:40,656 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {355#true} {355#true} #85#return; {355#true} is VALID [2018-11-23 10:20:40,656 INFO L256 TraceCheckUtils]: 4: Hoare triple {355#true} call #t~ret13 := main(); {355#true} is VALID [2018-11-23 10:20:40,657 INFO L273 TraceCheckUtils]: 5: Hoare triple {355#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {355#true} is VALID [2018-11-23 10:20:40,657 INFO L273 TraceCheckUtils]: 6: Hoare triple {355#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {355#true} is VALID [2018-11-23 10:20:40,657 INFO L256 TraceCheckUtils]: 7: Hoare triple {355#true} call init_nondet(~#x~0.base, ~#x~0.offset); {355#true} is VALID [2018-11-23 10:20:40,658 INFO L273 TraceCheckUtils]: 8: Hoare triple {355#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {355#true} is VALID [2018-11-23 10:20:40,658 INFO L273 TraceCheckUtils]: 9: Hoare triple {355#true} assume !~bvslt32(~i~0, ~N~0); {355#true} is VALID [2018-11-23 10:20:40,658 INFO L273 TraceCheckUtils]: 10: Hoare triple {355#true} assume true; {355#true} is VALID [2018-11-23 10:20:40,658 INFO L268 TraceCheckUtils]: 11: Hoare quadruple {355#true} {355#true} #89#return; {355#true} is VALID [2018-11-23 10:20:40,659 INFO L273 TraceCheckUtils]: 12: Hoare triple {355#true} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {355#true} is VALID [2018-11-23 10:20:40,659 INFO L256 TraceCheckUtils]: 13: Hoare triple {355#true} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {355#true} is VALID [2018-11-23 10:20:40,679 INFO L273 TraceCheckUtils]: 14: Hoare triple {355#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {402#(= (_ bv0 32) rangesum_~cnt~0)} is VALID [2018-11-23 10:20:40,693 INFO L273 TraceCheckUtils]: 15: Hoare triple {402#(= (_ bv0 32) rangesum_~cnt~0)} assume !~bvslt32(~i~1, ~N~0); {402#(= (_ bv0 32) rangesum_~cnt~0)} is VALID [2018-11-23 10:20:40,707 INFO L273 TraceCheckUtils]: 16: Hoare triple {402#(= (_ bv0 32) rangesum_~cnt~0)} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {356#false} is VALID [2018-11-23 10:20:40,708 INFO L273 TraceCheckUtils]: 17: Hoare triple {356#false} assume true; {356#false} is VALID [2018-11-23 10:20:40,708 INFO L268 TraceCheckUtils]: 18: Hoare quadruple {356#false} {355#true} #91#return; {356#false} is VALID [2018-11-23 10:20:40,708 INFO L273 TraceCheckUtils]: 19: Hoare triple {356#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {356#false} is VALID [2018-11-23 10:20:40,709 INFO L256 TraceCheckUtils]: 20: Hoare triple {356#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {356#false} is VALID [2018-11-23 10:20:40,709 INFO L273 TraceCheckUtils]: 21: Hoare triple {356#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {356#false} is VALID [2018-11-23 10:20:40,709 INFO L273 TraceCheckUtils]: 22: Hoare triple {356#false} assume !~bvslt32(~i~1, ~N~0); {356#false} is VALID [2018-11-23 10:20:40,710 INFO L273 TraceCheckUtils]: 23: Hoare triple {356#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {356#false} is VALID [2018-11-23 10:20:40,710 INFO L273 TraceCheckUtils]: 24: Hoare triple {356#false} assume true; {356#false} is VALID [2018-11-23 10:20:40,710 INFO L268 TraceCheckUtils]: 25: Hoare quadruple {356#false} {356#false} #93#return; {356#false} is VALID [2018-11-23 10:20:40,711 INFO L273 TraceCheckUtils]: 26: Hoare triple {356#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {356#false} is VALID [2018-11-23 10:20:40,711 INFO L273 TraceCheckUtils]: 27: Hoare triple {356#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {356#false} is VALID [2018-11-23 10:20:40,711 INFO L273 TraceCheckUtils]: 28: Hoare triple {356#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {356#false} is VALID [2018-11-23 10:20:40,712 INFO L256 TraceCheckUtils]: 29: Hoare triple {356#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {356#false} is VALID [2018-11-23 10:20:40,712 INFO L273 TraceCheckUtils]: 30: Hoare triple {356#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {356#false} is VALID [2018-11-23 10:20:40,712 INFO L273 TraceCheckUtils]: 31: Hoare triple {356#false} assume !~bvslt32(~i~1, ~N~0); {356#false} is VALID [2018-11-23 10:20:40,713 INFO L273 TraceCheckUtils]: 32: Hoare triple {356#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {356#false} is VALID [2018-11-23 10:20:40,713 INFO L273 TraceCheckUtils]: 33: Hoare triple {356#false} assume true; {356#false} is VALID [2018-11-23 10:20:40,713 INFO L268 TraceCheckUtils]: 34: Hoare quadruple {356#false} {356#false} #95#return; {356#false} is VALID [2018-11-23 10:20:40,714 INFO L273 TraceCheckUtils]: 35: Hoare triple {356#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {356#false} is VALID [2018-11-23 10:20:40,714 INFO L273 TraceCheckUtils]: 36: Hoare triple {356#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {356#false} is VALID [2018-11-23 10:20:40,715 INFO L273 TraceCheckUtils]: 37: Hoare triple {356#false} assume !false; {356#false} is VALID [2018-11-23 10:20:40,718 INFO L134 CoverageAnalysis]: Checked inductivity of 15 backedges. 6 proven. 0 refuted. 0 times theorem prover too weak. 9 trivial. 0 not checked. [2018-11-23 10:20:40,718 INFO L312 TraceCheckSpWp]: Omiting computation of backward sequence because forward sequence was already perfect [2018-11-23 10:20:40,721 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 10:20:40,721 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [3] imperfect sequences [] total 3 [2018-11-23 10:20:40,723 INFO L78 Accepts]: Start accepts. Automaton has 3 states. Word has length 38 [2018-11-23 10:20:40,725 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:40,725 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 3 states. [2018-11-23 10:20:40,985 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 33 edges. 33 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:40,986 INFO L459 AbstractCegarLoop]: Interpolant automaton has 3 states [2018-11-23 10:20:40,986 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 3 interpolants. [2018-11-23 10:20:40,986 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=3, Invalid=3, Unknown=0, NotChecked=0, Total=6 [2018-11-23 10:20:40,987 INFO L87 Difference]: Start difference. First operand 33 states and 39 transitions. Second operand 3 states. [2018-11-23 10:20:41,627 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:41,627 INFO L93 Difference]: Finished difference Result 57 states and 75 transitions. [2018-11-23 10:20:41,628 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 3 states. [2018-11-23 10:20:41,628 INFO L78 Accepts]: Start accepts. Automaton has 3 states. Word has length 38 [2018-11-23 10:20:41,628 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:20:41,628 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 3 states. [2018-11-23 10:20:41,633 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 3 states to 3 states and 75 transitions. [2018-11-23 10:20:41,634 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 3 states. [2018-11-23 10:20:41,638 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 3 states to 3 states and 75 transitions. [2018-11-23 10:20:41,638 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 3 states and 75 transitions. [2018-11-23 10:20:42,208 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 75 edges. 75 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:42,212 INFO L225 Difference]: With dead ends: 57 [2018-11-23 10:20:42,212 INFO L226 Difference]: Without dead ends: 39 [2018-11-23 10:20:42,213 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 37 GetRequests, 36 SyntacticMatches, 0 SemanticMatches, 1 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=3, Invalid=3, Unknown=0, NotChecked=0, Total=6 [2018-11-23 10:20:42,214 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 39 states. [2018-11-23 10:20:42,226 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 39 to 37. [2018-11-23 10:20:42,226 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:20:42,227 INFO L82 GeneralOperation]: Start isEquivalent. First operand 39 states. Second operand 37 states. [2018-11-23 10:20:42,227 INFO L74 IsIncluded]: Start isIncluded. First operand 39 states. Second operand 37 states. [2018-11-23 10:20:42,227 INFO L87 Difference]: Start difference. First operand 39 states. Second operand 37 states. [2018-11-23 10:20:42,232 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:42,232 INFO L93 Difference]: Finished difference Result 39 states and 49 transitions. [2018-11-23 10:20:42,232 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 49 transitions. [2018-11-23 10:20:42,233 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:42,234 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:42,234 INFO L74 IsIncluded]: Start isIncluded. First operand 37 states. Second operand 39 states. [2018-11-23 10:20:42,234 INFO L87 Difference]: Start difference. First operand 37 states. Second operand 39 states. [2018-11-23 10:20:42,241 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:42,242 INFO L93 Difference]: Finished difference Result 39 states and 49 transitions. [2018-11-23 10:20:42,245 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 49 transitions. [2018-11-23 10:20:42,246 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:42,246 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:42,246 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:20:42,246 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:20:42,247 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 37 states. [2018-11-23 10:20:42,250 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 37 states to 37 states and 45 transitions. [2018-11-23 10:20:42,250 INFO L78 Accepts]: Start accepts. Automaton has 37 states and 45 transitions. Word has length 38 [2018-11-23 10:20:42,250 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:20:42,251 INFO L480 AbstractCegarLoop]: Abstraction has 37 states and 45 transitions. [2018-11-23 10:20:42,251 INFO L481 AbstractCegarLoop]: Interpolant automaton has 3 states. [2018-11-23 10:20:42,251 INFO L276 IsEmpty]: Start isEmpty. Operand 37 states and 45 transitions. [2018-11-23 10:20:42,253 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 39 [2018-11-23 10:20:42,253 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:42,253 INFO L402 BasicCegarLoop]: trace histogram [3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:42,253 INFO L423 AbstractCegarLoop]: === Iteration 3 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:42,254 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:42,254 INFO L82 PathProgramCache]: Analyzing trace with hash -1742767491, now seen corresponding path program 1 times [2018-11-23 10:20:42,255 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:42,255 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 4 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 4 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:42,276 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 10:20:42,337 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:42,370 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:42,373 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:42,471 INFO L256 TraceCheckUtils]: 0: Hoare triple {676#true} call ULTIMATE.init(); {676#true} is VALID [2018-11-23 10:20:42,472 INFO L273 TraceCheckUtils]: 1: Hoare triple {676#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {676#true} is VALID [2018-11-23 10:20:42,472 INFO L273 TraceCheckUtils]: 2: Hoare triple {676#true} assume true; {676#true} is VALID [2018-11-23 10:20:42,473 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {676#true} {676#true} #85#return; {676#true} is VALID [2018-11-23 10:20:42,473 INFO L256 TraceCheckUtils]: 4: Hoare triple {676#true} call #t~ret13 := main(); {676#true} is VALID [2018-11-23 10:20:42,474 INFO L273 TraceCheckUtils]: 5: Hoare triple {676#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {676#true} is VALID [2018-11-23 10:20:42,474 INFO L273 TraceCheckUtils]: 6: Hoare triple {676#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {699#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:42,475 INFO L256 TraceCheckUtils]: 7: Hoare triple {699#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {699#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:42,476 INFO L273 TraceCheckUtils]: 8: Hoare triple {699#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {706#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:42,487 INFO L273 TraceCheckUtils]: 9: Hoare triple {706#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvslt32(~i~0, ~N~0); {677#false} is VALID [2018-11-23 10:20:42,487 INFO L273 TraceCheckUtils]: 10: Hoare triple {677#false} assume true; {677#false} is VALID [2018-11-23 10:20:42,487 INFO L268 TraceCheckUtils]: 11: Hoare quadruple {677#false} {699#(bvsgt ~N~0 (_ bv1 32))} #89#return; {677#false} is VALID [2018-11-23 10:20:42,488 INFO L273 TraceCheckUtils]: 12: Hoare triple {677#false} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {677#false} is VALID [2018-11-23 10:20:42,488 INFO L256 TraceCheckUtils]: 13: Hoare triple {677#false} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {677#false} is VALID [2018-11-23 10:20:42,488 INFO L273 TraceCheckUtils]: 14: Hoare triple {677#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {677#false} is VALID [2018-11-23 10:20:42,489 INFO L273 TraceCheckUtils]: 15: Hoare triple {677#false} assume !~bvslt32(~i~1, ~N~0); {677#false} is VALID [2018-11-23 10:20:42,489 INFO L273 TraceCheckUtils]: 16: Hoare triple {677#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {677#false} is VALID [2018-11-23 10:20:42,489 INFO L273 TraceCheckUtils]: 17: Hoare triple {677#false} assume true; {677#false} is VALID [2018-11-23 10:20:42,489 INFO L268 TraceCheckUtils]: 18: Hoare quadruple {677#false} {677#false} #91#return; {677#false} is VALID [2018-11-23 10:20:42,490 INFO L273 TraceCheckUtils]: 19: Hoare triple {677#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {677#false} is VALID [2018-11-23 10:20:42,490 INFO L256 TraceCheckUtils]: 20: Hoare triple {677#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {677#false} is VALID [2018-11-23 10:20:42,490 INFO L273 TraceCheckUtils]: 21: Hoare triple {677#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {677#false} is VALID [2018-11-23 10:20:42,490 INFO L273 TraceCheckUtils]: 22: Hoare triple {677#false} assume !~bvslt32(~i~1, ~N~0); {677#false} is VALID [2018-11-23 10:20:42,491 INFO L273 TraceCheckUtils]: 23: Hoare triple {677#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {677#false} is VALID [2018-11-23 10:20:42,491 INFO L273 TraceCheckUtils]: 24: Hoare triple {677#false} assume true; {677#false} is VALID [2018-11-23 10:20:42,491 INFO L268 TraceCheckUtils]: 25: Hoare quadruple {677#false} {677#false} #93#return; {677#false} is VALID [2018-11-23 10:20:42,491 INFO L273 TraceCheckUtils]: 26: Hoare triple {677#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {677#false} is VALID [2018-11-23 10:20:42,492 INFO L273 TraceCheckUtils]: 27: Hoare triple {677#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {677#false} is VALID [2018-11-23 10:20:42,492 INFO L273 TraceCheckUtils]: 28: Hoare triple {677#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {677#false} is VALID [2018-11-23 10:20:42,492 INFO L256 TraceCheckUtils]: 29: Hoare triple {677#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {677#false} is VALID [2018-11-23 10:20:42,493 INFO L273 TraceCheckUtils]: 30: Hoare triple {677#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {677#false} is VALID [2018-11-23 10:20:42,493 INFO L273 TraceCheckUtils]: 31: Hoare triple {677#false} assume !~bvslt32(~i~1, ~N~0); {677#false} is VALID [2018-11-23 10:20:42,493 INFO L273 TraceCheckUtils]: 32: Hoare triple {677#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {677#false} is VALID [2018-11-23 10:20:42,494 INFO L273 TraceCheckUtils]: 33: Hoare triple {677#false} assume true; {677#false} is VALID [2018-11-23 10:20:42,494 INFO L268 TraceCheckUtils]: 34: Hoare quadruple {677#false} {677#false} #95#return; {677#false} is VALID [2018-11-23 10:20:42,494 INFO L273 TraceCheckUtils]: 35: Hoare triple {677#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {677#false} is VALID [2018-11-23 10:20:42,495 INFO L273 TraceCheckUtils]: 36: Hoare triple {677#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {677#false} is VALID [2018-11-23 10:20:42,495 INFO L273 TraceCheckUtils]: 37: Hoare triple {677#false} assume !false; {677#false} is VALID [2018-11-23 10:20:42,498 INFO L134 CoverageAnalysis]: Checked inductivity of 15 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 15 trivial. 0 not checked. [2018-11-23 10:20:42,498 INFO L312 TraceCheckSpWp]: Omiting computation of backward sequence because forward sequence was already perfect [2018-11-23 10:20:42,500 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 10:20:42,500 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [4] imperfect sequences [] total 4 [2018-11-23 10:20:42,501 INFO L78 Accepts]: Start accepts. Automaton has 4 states. Word has length 38 [2018-11-23 10:20:42,501 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:42,501 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 4 states. [2018-11-23 10:20:42,589 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 30 edges. 30 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:42,589 INFO L459 AbstractCegarLoop]: Interpolant automaton has 4 states [2018-11-23 10:20:42,589 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 4 interpolants. [2018-11-23 10:20:42,590 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=6, Invalid=6, Unknown=0, NotChecked=0, Total=12 [2018-11-23 10:20:42,590 INFO L87 Difference]: Start difference. First operand 37 states and 45 transitions. Second operand 4 states. [2018-11-23 10:20:43,335 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:43,336 INFO L93 Difference]: Finished difference Result 65 states and 81 transitions. [2018-11-23 10:20:43,336 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 4 states. [2018-11-23 10:20:43,336 INFO L78 Accepts]: Start accepts. Automaton has 4 states. Word has length 38 [2018-11-23 10:20:43,336 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:20:43,337 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 4 states. [2018-11-23 10:20:43,340 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 4 states to 4 states and 69 transitions. [2018-11-23 10:20:43,340 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 4 states. [2018-11-23 10:20:43,343 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 4 states to 4 states and 69 transitions. [2018-11-23 10:20:43,343 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 4 states and 69 transitions. [2018-11-23 10:20:43,718 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 69 edges. 69 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:43,721 INFO L225 Difference]: With dead ends: 65 [2018-11-23 10:20:43,722 INFO L226 Difference]: Without dead ends: 39 [2018-11-23 10:20:43,723 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 37 GetRequests, 34 SyntacticMatches, 1 SemanticMatches, 2 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=6, Invalid=6, Unknown=0, NotChecked=0, Total=12 [2018-11-23 10:20:43,723 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 39 states. [2018-11-23 10:20:43,750 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 39 to 38. [2018-11-23 10:20:43,751 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:20:43,751 INFO L82 GeneralOperation]: Start isEquivalent. First operand 39 states. Second operand 38 states. [2018-11-23 10:20:43,751 INFO L74 IsIncluded]: Start isIncluded. First operand 39 states. Second operand 38 states. [2018-11-23 10:20:43,751 INFO L87 Difference]: Start difference. First operand 39 states. Second operand 38 states. [2018-11-23 10:20:43,754 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:43,755 INFO L93 Difference]: Finished difference Result 39 states and 47 transitions. [2018-11-23 10:20:43,755 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 47 transitions. [2018-11-23 10:20:43,755 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:43,756 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:43,756 INFO L74 IsIncluded]: Start isIncluded. First operand 38 states. Second operand 39 states. [2018-11-23 10:20:43,756 INFO L87 Difference]: Start difference. First operand 38 states. Second operand 39 states. [2018-11-23 10:20:43,759 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:43,760 INFO L93 Difference]: Finished difference Result 39 states and 47 transitions. [2018-11-23 10:20:43,760 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 47 transitions. [2018-11-23 10:20:43,761 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:43,761 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:43,761 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:20:43,761 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:20:43,761 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 38 states. [2018-11-23 10:20:43,764 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 38 states to 38 states and 46 transitions. [2018-11-23 10:20:43,764 INFO L78 Accepts]: Start accepts. Automaton has 38 states and 46 transitions. Word has length 38 [2018-11-23 10:20:43,765 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:20:43,765 INFO L480 AbstractCegarLoop]: Abstraction has 38 states and 46 transitions. [2018-11-23 10:20:43,765 INFO L481 AbstractCegarLoop]: Interpolant automaton has 4 states. [2018-11-23 10:20:43,765 INFO L276 IsEmpty]: Start isEmpty. Operand 38 states and 46 transitions. [2018-11-23 10:20:43,766 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 41 [2018-11-23 10:20:43,766 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:43,767 INFO L402 BasicCegarLoop]: trace histogram [3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:43,767 INFO L423 AbstractCegarLoop]: === Iteration 4 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:43,767 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:43,767 INFO L82 PathProgramCache]: Analyzing trace with hash 558201179, now seen corresponding path program 1 times [2018-11-23 10:20:43,768 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:43,768 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 5 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 5 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:43,787 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 10:20:43,844 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:43,866 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:43,867 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:43,990 INFO L256 TraceCheckUtils]: 0: Hoare triple {1011#true} call ULTIMATE.init(); {1011#true} is VALID [2018-11-23 10:20:43,991 INFO L273 TraceCheckUtils]: 1: Hoare triple {1011#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {1011#true} is VALID [2018-11-23 10:20:43,991 INFO L273 TraceCheckUtils]: 2: Hoare triple {1011#true} assume true; {1011#true} is VALID [2018-11-23 10:20:43,992 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {1011#true} {1011#true} #85#return; {1011#true} is VALID [2018-11-23 10:20:43,992 INFO L256 TraceCheckUtils]: 4: Hoare triple {1011#true} call #t~ret13 := main(); {1011#true} is VALID [2018-11-23 10:20:43,992 INFO L273 TraceCheckUtils]: 5: Hoare triple {1011#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {1011#true} is VALID [2018-11-23 10:20:43,995 INFO L273 TraceCheckUtils]: 6: Hoare triple {1011#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {1034#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:44,009 INFO L256 TraceCheckUtils]: 7: Hoare triple {1034#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {1034#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:44,011 INFO L273 TraceCheckUtils]: 8: Hoare triple {1034#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {1041#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:44,013 INFO L273 TraceCheckUtils]: 9: Hoare triple {1041#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1041#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:44,015 INFO L273 TraceCheckUtils]: 10: Hoare triple {1041#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1048#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:44,017 INFO L273 TraceCheckUtils]: 11: Hoare triple {1048#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvslt32(~i~0, ~N~0); {1012#false} is VALID [2018-11-23 10:20:44,017 INFO L273 TraceCheckUtils]: 12: Hoare triple {1012#false} assume true; {1012#false} is VALID [2018-11-23 10:20:44,018 INFO L268 TraceCheckUtils]: 13: Hoare quadruple {1012#false} {1034#(bvsgt ~N~0 (_ bv1 32))} #89#return; {1012#false} is VALID [2018-11-23 10:20:44,018 INFO L273 TraceCheckUtils]: 14: Hoare triple {1012#false} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {1012#false} is VALID [2018-11-23 10:20:44,018 INFO L256 TraceCheckUtils]: 15: Hoare triple {1012#false} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {1012#false} is VALID [2018-11-23 10:20:44,018 INFO L273 TraceCheckUtils]: 16: Hoare triple {1012#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,019 INFO L273 TraceCheckUtils]: 17: Hoare triple {1012#false} assume !~bvslt32(~i~1, ~N~0); {1012#false} is VALID [2018-11-23 10:20:44,019 INFO L273 TraceCheckUtils]: 18: Hoare triple {1012#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,019 INFO L273 TraceCheckUtils]: 19: Hoare triple {1012#false} assume true; {1012#false} is VALID [2018-11-23 10:20:44,020 INFO L268 TraceCheckUtils]: 20: Hoare quadruple {1012#false} {1012#false} #91#return; {1012#false} is VALID [2018-11-23 10:20:44,020 INFO L273 TraceCheckUtils]: 21: Hoare triple {1012#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {1012#false} is VALID [2018-11-23 10:20:44,020 INFO L256 TraceCheckUtils]: 22: Hoare triple {1012#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {1012#false} is VALID [2018-11-23 10:20:44,021 INFO L273 TraceCheckUtils]: 23: Hoare triple {1012#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,021 INFO L273 TraceCheckUtils]: 24: Hoare triple {1012#false} assume !~bvslt32(~i~1, ~N~0); {1012#false} is VALID [2018-11-23 10:20:44,021 INFO L273 TraceCheckUtils]: 25: Hoare triple {1012#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,021 INFO L273 TraceCheckUtils]: 26: Hoare triple {1012#false} assume true; {1012#false} is VALID [2018-11-23 10:20:44,022 INFO L268 TraceCheckUtils]: 27: Hoare quadruple {1012#false} {1012#false} #93#return; {1012#false} is VALID [2018-11-23 10:20:44,022 INFO L273 TraceCheckUtils]: 28: Hoare triple {1012#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,022 INFO L273 TraceCheckUtils]: 29: Hoare triple {1012#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {1012#false} is VALID [2018-11-23 10:20:44,023 INFO L273 TraceCheckUtils]: 30: Hoare triple {1012#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {1012#false} is VALID [2018-11-23 10:20:44,023 INFO L256 TraceCheckUtils]: 31: Hoare triple {1012#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {1012#false} is VALID [2018-11-23 10:20:44,023 INFO L273 TraceCheckUtils]: 32: Hoare triple {1012#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,023 INFO L273 TraceCheckUtils]: 33: Hoare triple {1012#false} assume !~bvslt32(~i~1, ~N~0); {1012#false} is VALID [2018-11-23 10:20:44,024 INFO L273 TraceCheckUtils]: 34: Hoare triple {1012#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,024 INFO L273 TraceCheckUtils]: 35: Hoare triple {1012#false} assume true; {1012#false} is VALID [2018-11-23 10:20:44,024 INFO L268 TraceCheckUtils]: 36: Hoare quadruple {1012#false} {1012#false} #95#return; {1012#false} is VALID [2018-11-23 10:20:44,025 INFO L273 TraceCheckUtils]: 37: Hoare triple {1012#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {1012#false} is VALID [2018-11-23 10:20:44,025 INFO L273 TraceCheckUtils]: 38: Hoare triple {1012#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {1012#false} is VALID [2018-11-23 10:20:44,025 INFO L273 TraceCheckUtils]: 39: Hoare triple {1012#false} assume !false; {1012#false} is VALID [2018-11-23 10:20:44,029 INFO L134 CoverageAnalysis]: Checked inductivity of 16 backedges. 0 proven. 1 refuted. 0 times theorem prover too weak. 15 trivial. 0 not checked. [2018-11-23 10:20:44,029 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 10:20:44,444 INFO L273 TraceCheckUtils]: 39: Hoare triple {1012#false} assume !false; {1012#false} is VALID [2018-11-23 10:20:44,445 INFO L273 TraceCheckUtils]: 38: Hoare triple {1012#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {1012#false} is VALID [2018-11-23 10:20:44,445 INFO L273 TraceCheckUtils]: 37: Hoare triple {1012#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {1012#false} is VALID [2018-11-23 10:20:44,445 INFO L268 TraceCheckUtils]: 36: Hoare quadruple {1011#true} {1012#false} #95#return; {1012#false} is VALID [2018-11-23 10:20:44,445 INFO L273 TraceCheckUtils]: 35: Hoare triple {1011#true} assume true; {1011#true} is VALID [2018-11-23 10:20:44,445 INFO L273 TraceCheckUtils]: 34: Hoare triple {1011#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1011#true} is VALID [2018-11-23 10:20:44,446 INFO L273 TraceCheckUtils]: 33: Hoare triple {1011#true} assume !~bvslt32(~i~1, ~N~0); {1011#true} is VALID [2018-11-23 10:20:44,446 INFO L273 TraceCheckUtils]: 32: Hoare triple {1011#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1011#true} is VALID [2018-11-23 10:20:44,446 INFO L256 TraceCheckUtils]: 31: Hoare triple {1012#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {1011#true} is VALID [2018-11-23 10:20:44,446 INFO L273 TraceCheckUtils]: 30: Hoare triple {1012#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {1012#false} is VALID [2018-11-23 10:20:44,447 INFO L273 TraceCheckUtils]: 29: Hoare triple {1012#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {1012#false} is VALID [2018-11-23 10:20:44,447 INFO L273 TraceCheckUtils]: 28: Hoare triple {1012#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {1012#false} is VALID [2018-11-23 10:20:44,447 INFO L268 TraceCheckUtils]: 27: Hoare quadruple {1011#true} {1012#false} #93#return; {1012#false} is VALID [2018-11-23 10:20:44,447 INFO L273 TraceCheckUtils]: 26: Hoare triple {1011#true} assume true; {1011#true} is VALID [2018-11-23 10:20:44,447 INFO L273 TraceCheckUtils]: 25: Hoare triple {1011#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1011#true} is VALID [2018-11-23 10:20:44,448 INFO L273 TraceCheckUtils]: 24: Hoare triple {1011#true} assume !~bvslt32(~i~1, ~N~0); {1011#true} is VALID [2018-11-23 10:20:44,448 INFO L273 TraceCheckUtils]: 23: Hoare triple {1011#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1011#true} is VALID [2018-11-23 10:20:44,448 INFO L256 TraceCheckUtils]: 22: Hoare triple {1012#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {1011#true} is VALID [2018-11-23 10:20:44,448 INFO L273 TraceCheckUtils]: 21: Hoare triple {1012#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {1012#false} is VALID [2018-11-23 10:20:44,448 INFO L268 TraceCheckUtils]: 20: Hoare quadruple {1011#true} {1012#false} #91#return; {1012#false} is VALID [2018-11-23 10:20:44,449 INFO L273 TraceCheckUtils]: 19: Hoare triple {1011#true} assume true; {1011#true} is VALID [2018-11-23 10:20:44,449 INFO L273 TraceCheckUtils]: 18: Hoare triple {1011#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1011#true} is VALID [2018-11-23 10:20:44,449 INFO L273 TraceCheckUtils]: 17: Hoare triple {1011#true} assume !~bvslt32(~i~1, ~N~0); {1011#true} is VALID [2018-11-23 10:20:44,450 INFO L273 TraceCheckUtils]: 16: Hoare triple {1011#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1011#true} is VALID [2018-11-23 10:20:44,450 INFO L256 TraceCheckUtils]: 15: Hoare triple {1012#false} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {1011#true} is VALID [2018-11-23 10:20:44,450 INFO L273 TraceCheckUtils]: 14: Hoare triple {1012#false} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {1012#false} is VALID [2018-11-23 10:20:44,451 INFO L268 TraceCheckUtils]: 13: Hoare quadruple {1217#(not (bvsgt ~N~0 (_ bv1 32)))} {1034#(bvsgt ~N~0 (_ bv1 32))} #89#return; {1012#false} is VALID [2018-11-23 10:20:44,452 INFO L273 TraceCheckUtils]: 12: Hoare triple {1217#(not (bvsgt ~N~0 (_ bv1 32)))} assume true; {1217#(not (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:44,452 INFO L273 TraceCheckUtils]: 11: Hoare triple {1224#(or (bvslt init_nondet_~i~0 ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} assume !~bvslt32(~i~0, ~N~0); {1217#(not (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:44,454 INFO L273 TraceCheckUtils]: 10: Hoare triple {1228#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1224#(or (bvslt init_nondet_~i~0 ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} is VALID [2018-11-23 10:20:44,455 INFO L273 TraceCheckUtils]: 9: Hoare triple {1228#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1228#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} is VALID [2018-11-23 10:20:44,456 INFO L273 TraceCheckUtils]: 8: Hoare triple {1011#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {1228#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} is VALID [2018-11-23 10:20:44,456 INFO L256 TraceCheckUtils]: 7: Hoare triple {1034#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {1011#true} is VALID [2018-11-23 10:20:44,457 INFO L273 TraceCheckUtils]: 6: Hoare triple {1011#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {1034#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:44,457 INFO L273 TraceCheckUtils]: 5: Hoare triple {1011#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {1011#true} is VALID [2018-11-23 10:20:44,457 INFO L256 TraceCheckUtils]: 4: Hoare triple {1011#true} call #t~ret13 := main(); {1011#true} is VALID [2018-11-23 10:20:44,457 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {1011#true} {1011#true} #85#return; {1011#true} is VALID [2018-11-23 10:20:44,458 INFO L273 TraceCheckUtils]: 2: Hoare triple {1011#true} assume true; {1011#true} is VALID [2018-11-23 10:20:44,458 INFO L273 TraceCheckUtils]: 1: Hoare triple {1011#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {1011#true} is VALID [2018-11-23 10:20:44,458 INFO L256 TraceCheckUtils]: 0: Hoare triple {1011#true} call ULTIMATE.init(); {1011#true} is VALID [2018-11-23 10:20:44,464 INFO L134 CoverageAnalysis]: Checked inductivity of 16 backedges. 0 proven. 1 refuted. 0 times theorem prover too weak. 15 trivial. 0 not checked. [2018-11-23 10:20:44,471 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 10:20:44,471 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [5, 6] total 8 [2018-11-23 10:20:44,472 INFO L78 Accepts]: Start accepts. Automaton has 8 states. Word has length 40 [2018-11-23 10:20:44,473 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:44,473 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 8 states. [2018-11-23 10:20:44,671 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 49 edges. 49 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:44,671 INFO L459 AbstractCegarLoop]: Interpolant automaton has 8 states [2018-11-23 10:20:44,671 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 8 interpolants. [2018-11-23 10:20:44,672 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=20, Invalid=36, Unknown=0, NotChecked=0, Total=56 [2018-11-23 10:20:44,672 INFO L87 Difference]: Start difference. First operand 38 states and 46 transitions. Second operand 8 states. [2018-11-23 10:20:46,865 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:46,866 INFO L93 Difference]: Finished difference Result 67 states and 83 transitions. [2018-11-23 10:20:46,866 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 7 states. [2018-11-23 10:20:46,866 INFO L78 Accepts]: Start accepts. Automaton has 8 states. Word has length 40 [2018-11-23 10:20:46,866 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:20:46,866 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 8 states. [2018-11-23 10:20:46,870 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 7 states to 7 states and 71 transitions. [2018-11-23 10:20:46,870 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 8 states. [2018-11-23 10:20:46,873 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 7 states to 7 states and 71 transitions. [2018-11-23 10:20:46,873 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 7 states and 71 transitions. [2018-11-23 10:20:47,237 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 71 edges. 71 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:47,240 INFO L225 Difference]: With dead ends: 67 [2018-11-23 10:20:47,241 INFO L226 Difference]: Without dead ends: 41 [2018-11-23 10:20:47,241 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 80 GetRequests, 70 SyntacticMatches, 3 SemanticMatches, 7 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 9 ImplicationChecksByTransitivity, 0.2s TimeCoverageRelationStatistics Valid=26, Invalid=46, Unknown=0, NotChecked=0, Total=72 [2018-11-23 10:20:47,242 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 41 states. [2018-11-23 10:20:47,285 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 41 to 40. [2018-11-23 10:20:47,286 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:20:47,286 INFO L82 GeneralOperation]: Start isEquivalent. First operand 41 states. Second operand 40 states. [2018-11-23 10:20:47,286 INFO L74 IsIncluded]: Start isIncluded. First operand 41 states. Second operand 40 states. [2018-11-23 10:20:47,286 INFO L87 Difference]: Start difference. First operand 41 states. Second operand 40 states. [2018-11-23 10:20:47,291 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:47,292 INFO L93 Difference]: Finished difference Result 41 states and 49 transitions. [2018-11-23 10:20:47,292 INFO L276 IsEmpty]: Start isEmpty. Operand 41 states and 49 transitions. [2018-11-23 10:20:47,292 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:47,293 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:47,293 INFO L74 IsIncluded]: Start isIncluded. First operand 40 states. Second operand 41 states. [2018-11-23 10:20:47,293 INFO L87 Difference]: Start difference. First operand 40 states. Second operand 41 states. [2018-11-23 10:20:47,296 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:47,296 INFO L93 Difference]: Finished difference Result 41 states and 49 transitions. [2018-11-23 10:20:47,296 INFO L276 IsEmpty]: Start isEmpty. Operand 41 states and 49 transitions. [2018-11-23 10:20:47,297 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:47,297 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:47,297 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:20:47,297 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:20:47,297 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 40 states. [2018-11-23 10:20:47,300 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 40 states to 40 states and 48 transitions. [2018-11-23 10:20:47,300 INFO L78 Accepts]: Start accepts. Automaton has 40 states and 48 transitions. Word has length 40 [2018-11-23 10:20:47,300 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:20:47,301 INFO L480 AbstractCegarLoop]: Abstraction has 40 states and 48 transitions. [2018-11-23 10:20:47,301 INFO L481 AbstractCegarLoop]: Interpolant automaton has 8 states. [2018-11-23 10:20:47,301 INFO L276 IsEmpty]: Start isEmpty. Operand 40 states and 48 transitions. [2018-11-23 10:20:47,302 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 43 [2018-11-23 10:20:47,302 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:47,303 INFO L402 BasicCegarLoop]: trace histogram [3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:47,303 INFO L423 AbstractCegarLoop]: === Iteration 5 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:47,303 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:47,303 INFO L82 PathProgramCache]: Analyzing trace with hash -119064391, now seen corresponding path program 2 times [2018-11-23 10:20:47,304 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:47,304 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 6 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 6 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:47,335 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST1 [2018-11-23 10:20:47,377 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 1 check-sat command(s) [2018-11-23 10:20:47,377 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 10:20:47,415 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:47,420 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:47,517 INFO L256 TraceCheckUtils]: 0: Hoare triple {1488#true} call ULTIMATE.init(); {1488#true} is VALID [2018-11-23 10:20:47,518 INFO L273 TraceCheckUtils]: 1: Hoare triple {1488#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {1488#true} is VALID [2018-11-23 10:20:47,518 INFO L273 TraceCheckUtils]: 2: Hoare triple {1488#true} assume true; {1488#true} is VALID [2018-11-23 10:20:47,518 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {1488#true} {1488#true} #85#return; {1488#true} is VALID [2018-11-23 10:20:47,518 INFO L256 TraceCheckUtils]: 4: Hoare triple {1488#true} call #t~ret13 := main(); {1488#true} is VALID [2018-11-23 10:20:47,519 INFO L273 TraceCheckUtils]: 5: Hoare triple {1488#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {1488#true} is VALID [2018-11-23 10:20:47,520 INFO L273 TraceCheckUtils]: 6: Hoare triple {1488#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,521 INFO L256 TraceCheckUtils]: 7: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,522 INFO L273 TraceCheckUtils]: 8: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,523 INFO L273 TraceCheckUtils]: 9: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,524 INFO L273 TraceCheckUtils]: 10: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,524 INFO L273 TraceCheckUtils]: 11: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,531 INFO L273 TraceCheckUtils]: 12: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,533 INFO L273 TraceCheckUtils]: 13: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !~bvslt32(~i~0, ~N~0); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,533 INFO L273 TraceCheckUtils]: 14: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume true; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,535 INFO L268 TraceCheckUtils]: 15: Hoare quadruple {1511#(bvsgt ~N~0 (_ bv1 32))} {1511#(bvsgt ~N~0 (_ bv1 32))} #89#return; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,536 INFO L273 TraceCheckUtils]: 16: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,537 INFO L256 TraceCheckUtils]: 17: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,538 INFO L273 TraceCheckUtils]: 18: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,538 INFO L273 TraceCheckUtils]: 19: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !~bvslt32(~i~1, ~N~0); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,539 INFO L273 TraceCheckUtils]: 20: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,540 INFO L273 TraceCheckUtils]: 21: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume true; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,541 INFO L268 TraceCheckUtils]: 22: Hoare quadruple {1511#(bvsgt ~N~0 (_ bv1 32))} {1511#(bvsgt ~N~0 (_ bv1 32))} #91#return; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,542 INFO L273 TraceCheckUtils]: 23: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,543 INFO L256 TraceCheckUtils]: 24: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,544 INFO L273 TraceCheckUtils]: 25: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,544 INFO L273 TraceCheckUtils]: 26: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !~bvslt32(~i~1, ~N~0); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,545 INFO L273 TraceCheckUtils]: 27: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,545 INFO L273 TraceCheckUtils]: 28: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume true; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,548 INFO L268 TraceCheckUtils]: 29: Hoare quadruple {1511#(bvsgt ~N~0 (_ bv1 32))} {1511#(bvsgt ~N~0 (_ bv1 32))} #93#return; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,548 INFO L273 TraceCheckUtils]: 30: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,549 INFO L273 TraceCheckUtils]: 31: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,550 INFO L273 TraceCheckUtils]: 32: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,551 INFO L256 TraceCheckUtils]: 33: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {1511#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:47,554 INFO L273 TraceCheckUtils]: 34: Hoare triple {1511#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1596#(and (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} is VALID [2018-11-23 10:20:47,558 INFO L273 TraceCheckUtils]: 35: Hoare triple {1596#(and (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} assume !~bvslt32(~i~1, ~N~0); {1489#false} is VALID [2018-11-23 10:20:47,558 INFO L273 TraceCheckUtils]: 36: Hoare triple {1489#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1489#false} is VALID [2018-11-23 10:20:47,558 INFO L273 TraceCheckUtils]: 37: Hoare triple {1489#false} assume true; {1489#false} is VALID [2018-11-23 10:20:47,559 INFO L268 TraceCheckUtils]: 38: Hoare quadruple {1489#false} {1511#(bvsgt ~N~0 (_ bv1 32))} #95#return; {1489#false} is VALID [2018-11-23 10:20:47,559 INFO L273 TraceCheckUtils]: 39: Hoare triple {1489#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {1489#false} is VALID [2018-11-23 10:20:47,559 INFO L273 TraceCheckUtils]: 40: Hoare triple {1489#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {1489#false} is VALID [2018-11-23 10:20:47,559 INFO L273 TraceCheckUtils]: 41: Hoare triple {1489#false} assume !false; {1489#false} is VALID [2018-11-23 10:20:47,564 INFO L134 CoverageAnalysis]: Checked inductivity of 19 backedges. 8 proven. 0 refuted. 0 times theorem prover too weak. 11 trivial. 0 not checked. [2018-11-23 10:20:47,564 INFO L312 TraceCheckSpWp]: Omiting computation of backward sequence because forward sequence was already perfect [2018-11-23 10:20:47,570 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 10:20:47,570 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [4] imperfect sequences [] total 4 [2018-11-23 10:20:47,571 INFO L78 Accepts]: Start accepts. Automaton has 4 states. Word has length 42 [2018-11-23 10:20:47,571 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:47,572 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 4 states. [2018-11-23 10:20:47,647 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 36 edges. 36 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:47,647 INFO L459 AbstractCegarLoop]: Interpolant automaton has 4 states [2018-11-23 10:20:47,648 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 4 interpolants. [2018-11-23 10:20:47,648 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=6, Invalid=6, Unknown=0, NotChecked=0, Total=12 [2018-11-23 10:20:47,648 INFO L87 Difference]: Start difference. First operand 40 states and 48 transitions. Second operand 4 states. [2018-11-23 10:20:48,357 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:48,358 INFO L93 Difference]: Finished difference Result 65 states and 84 transitions. [2018-11-23 10:20:48,358 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 4 states. [2018-11-23 10:20:48,358 INFO L78 Accepts]: Start accepts. Automaton has 4 states. Word has length 42 [2018-11-23 10:20:48,358 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:20:48,359 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 4 states. [2018-11-23 10:20:48,361 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 4 states to 4 states and 69 transitions. [2018-11-23 10:20:48,361 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 4 states. [2018-11-23 10:20:48,364 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 4 states to 4 states and 69 transitions. [2018-11-23 10:20:48,364 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 4 states and 69 transitions. [2018-11-23 10:20:48,782 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 69 edges. 69 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:48,783 INFO L225 Difference]: With dead ends: 65 [2018-11-23 10:20:48,784 INFO L226 Difference]: Without dead ends: 43 [2018-11-23 10:20:48,784 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 41 GetRequests, 38 SyntacticMatches, 1 SemanticMatches, 2 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=6, Invalid=6, Unknown=0, NotChecked=0, Total=12 [2018-11-23 10:20:48,785 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 43 states. [2018-11-23 10:20:48,808 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 43 to 42. [2018-11-23 10:20:48,809 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:20:48,809 INFO L82 GeneralOperation]: Start isEquivalent. First operand 43 states. Second operand 42 states. [2018-11-23 10:20:48,809 INFO L74 IsIncluded]: Start isIncluded. First operand 43 states. Second operand 42 states. [2018-11-23 10:20:48,809 INFO L87 Difference]: Start difference. First operand 43 states. Second operand 42 states. [2018-11-23 10:20:48,812 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:48,812 INFO L93 Difference]: Finished difference Result 43 states and 51 transitions. [2018-11-23 10:20:48,813 INFO L276 IsEmpty]: Start isEmpty. Operand 43 states and 51 transitions. [2018-11-23 10:20:48,813 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:48,814 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:48,814 INFO L74 IsIncluded]: Start isIncluded. First operand 42 states. Second operand 43 states. [2018-11-23 10:20:48,814 INFO L87 Difference]: Start difference. First operand 42 states. Second operand 43 states. [2018-11-23 10:20:48,817 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:48,817 INFO L93 Difference]: Finished difference Result 43 states and 51 transitions. [2018-11-23 10:20:48,817 INFO L276 IsEmpty]: Start isEmpty. Operand 43 states and 51 transitions. [2018-11-23 10:20:48,818 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:48,818 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:48,818 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:20:48,818 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:20:48,818 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 42 states. [2018-11-23 10:20:48,820 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 42 states to 42 states and 50 transitions. [2018-11-23 10:20:48,821 INFO L78 Accepts]: Start accepts. Automaton has 42 states and 50 transitions. Word has length 42 [2018-11-23 10:20:48,821 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:20:48,821 INFO L480 AbstractCegarLoop]: Abstraction has 42 states and 50 transitions. [2018-11-23 10:20:48,821 INFO L481 AbstractCegarLoop]: Interpolant automaton has 4 states. [2018-11-23 10:20:48,822 INFO L276 IsEmpty]: Start isEmpty. Operand 42 states and 50 transitions. [2018-11-23 10:20:48,823 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 52 [2018-11-23 10:20:48,823 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:48,823 INFO L402 BasicCegarLoop]: trace histogram [3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:48,824 INFO L423 AbstractCegarLoop]: === Iteration 6 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:48,824 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:48,824 INFO L82 PathProgramCache]: Analyzing trace with hash -12268618, now seen corresponding path program 1 times [2018-11-23 10:20:48,824 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:48,825 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 7 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 7 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:48,853 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 10:20:48,933 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:48,961 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:48,963 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:49,219 INFO L256 TraceCheckUtils]: 0: Hoare triple {1850#true} call ULTIMATE.init(); {1850#true} is VALID [2018-11-23 10:20:49,220 INFO L273 TraceCheckUtils]: 1: Hoare triple {1850#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {1850#true} is VALID [2018-11-23 10:20:49,220 INFO L273 TraceCheckUtils]: 2: Hoare triple {1850#true} assume true; {1850#true} is VALID [2018-11-23 10:20:49,221 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {1850#true} {1850#true} #85#return; {1850#true} is VALID [2018-11-23 10:20:49,221 INFO L256 TraceCheckUtils]: 4: Hoare triple {1850#true} call #t~ret13 := main(); {1850#true} is VALID [2018-11-23 10:20:49,222 INFO L273 TraceCheckUtils]: 5: Hoare triple {1850#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {1850#true} is VALID [2018-11-23 10:20:49,222 INFO L273 TraceCheckUtils]: 6: Hoare triple {1850#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {1873#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:49,224 INFO L256 TraceCheckUtils]: 7: Hoare triple {1873#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {1873#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:49,224 INFO L273 TraceCheckUtils]: 8: Hoare triple {1873#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {1880#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,225 INFO L273 TraceCheckUtils]: 9: Hoare triple {1880#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1880#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,226 INFO L273 TraceCheckUtils]: 10: Hoare triple {1880#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1887#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,227 INFO L273 TraceCheckUtils]: 11: Hoare triple {1887#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1887#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,228 INFO L273 TraceCheckUtils]: 12: Hoare triple {1887#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1894#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,231 INFO L273 TraceCheckUtils]: 13: Hoare triple {1894#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvslt32(~i~0, ~N~0); {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,232 INFO L273 TraceCheckUtils]: 14: Hoare triple {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume true; {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,233 INFO L268 TraceCheckUtils]: 15: Hoare quadruple {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} {1873#(bvsgt ~N~0 (_ bv1 32))} #89#return; {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,234 INFO L273 TraceCheckUtils]: 16: Hoare triple {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,236 INFO L256 TraceCheckUtils]: 17: Hoare triple {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,240 INFO L273 TraceCheckUtils]: 18: Hoare triple {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1914#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} is VALID [2018-11-23 10:20:49,243 INFO L273 TraceCheckUtils]: 19: Hoare triple {1914#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} assume !!~bvslt32(~i~1, ~N~0); {1914#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} is VALID [2018-11-23 10:20:49,245 INFO L273 TraceCheckUtils]: 20: Hoare triple {1914#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {1914#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} is VALID [2018-11-23 10:20:49,246 INFO L273 TraceCheckUtils]: 21: Hoare triple {1914#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv0 32) rangesum_~i~1))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {1924#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv1 32) rangesum_~i~1))} is VALID [2018-11-23 10:20:49,247 INFO L273 TraceCheckUtils]: 22: Hoare triple {1924#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)) (= (_ bv1 32) rangesum_~i~1))} assume !~bvslt32(~i~1, ~N~0); {1851#false} is VALID [2018-11-23 10:20:49,247 INFO L273 TraceCheckUtils]: 23: Hoare triple {1851#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1851#false} is VALID [2018-11-23 10:20:49,247 INFO L273 TraceCheckUtils]: 24: Hoare triple {1851#false} assume true; {1851#false} is VALID [2018-11-23 10:20:49,247 INFO L268 TraceCheckUtils]: 25: Hoare quadruple {1851#false} {1898#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} #91#return; {1851#false} is VALID [2018-11-23 10:20:49,248 INFO L273 TraceCheckUtils]: 26: Hoare triple {1851#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {1851#false} is VALID [2018-11-23 10:20:49,248 INFO L256 TraceCheckUtils]: 27: Hoare triple {1851#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {1851#false} is VALID [2018-11-23 10:20:49,248 INFO L273 TraceCheckUtils]: 28: Hoare triple {1851#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1851#false} is VALID [2018-11-23 10:20:49,248 INFO L273 TraceCheckUtils]: 29: Hoare triple {1851#false} assume !!~bvslt32(~i~1, ~N~0); {1851#false} is VALID [2018-11-23 10:20:49,248 INFO L273 TraceCheckUtils]: 30: Hoare triple {1851#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {1851#false} is VALID [2018-11-23 10:20:49,249 INFO L273 TraceCheckUtils]: 31: Hoare triple {1851#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {1851#false} is VALID [2018-11-23 10:20:49,249 INFO L273 TraceCheckUtils]: 32: Hoare triple {1851#false} assume !~bvslt32(~i~1, ~N~0); {1851#false} is VALID [2018-11-23 10:20:49,249 INFO L273 TraceCheckUtils]: 33: Hoare triple {1851#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1851#false} is VALID [2018-11-23 10:20:49,249 INFO L273 TraceCheckUtils]: 34: Hoare triple {1851#false} assume true; {1851#false} is VALID [2018-11-23 10:20:49,249 INFO L268 TraceCheckUtils]: 35: Hoare quadruple {1851#false} {1851#false} #93#return; {1851#false} is VALID [2018-11-23 10:20:49,250 INFO L273 TraceCheckUtils]: 36: Hoare triple {1851#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {1851#false} is VALID [2018-11-23 10:20:49,250 INFO L273 TraceCheckUtils]: 37: Hoare triple {1851#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {1851#false} is VALID [2018-11-23 10:20:49,250 INFO L273 TraceCheckUtils]: 38: Hoare triple {1851#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {1851#false} is VALID [2018-11-23 10:20:49,250 INFO L256 TraceCheckUtils]: 39: Hoare triple {1851#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {1851#false} is VALID [2018-11-23 10:20:49,250 INFO L273 TraceCheckUtils]: 40: Hoare triple {1851#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1851#false} is VALID [2018-11-23 10:20:49,251 INFO L273 TraceCheckUtils]: 41: Hoare triple {1851#false} assume !!~bvslt32(~i~1, ~N~0); {1851#false} is VALID [2018-11-23 10:20:49,251 INFO L273 TraceCheckUtils]: 42: Hoare triple {1851#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {1851#false} is VALID [2018-11-23 10:20:49,251 INFO L273 TraceCheckUtils]: 43: Hoare triple {1851#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {1851#false} is VALID [2018-11-23 10:20:49,251 INFO L273 TraceCheckUtils]: 44: Hoare triple {1851#false} assume !~bvslt32(~i~1, ~N~0); {1851#false} is VALID [2018-11-23 10:20:49,251 INFO L273 TraceCheckUtils]: 45: Hoare triple {1851#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1851#false} is VALID [2018-11-23 10:20:49,252 INFO L273 TraceCheckUtils]: 46: Hoare triple {1851#false} assume true; {1851#false} is VALID [2018-11-23 10:20:49,252 INFO L268 TraceCheckUtils]: 47: Hoare quadruple {1851#false} {1851#false} #95#return; {1851#false} is VALID [2018-11-23 10:20:49,252 INFO L273 TraceCheckUtils]: 48: Hoare triple {1851#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {1851#false} is VALID [2018-11-23 10:20:49,252 INFO L273 TraceCheckUtils]: 49: Hoare triple {1851#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {1851#false} is VALID [2018-11-23 10:20:49,252 INFO L273 TraceCheckUtils]: 50: Hoare triple {1851#false} assume !false; {1851#false} is VALID [2018-11-23 10:20:49,256 INFO L134 CoverageAnalysis]: Checked inductivity of 37 backedges. 14 proven. 5 refuted. 0 times theorem prover too weak. 18 trivial. 0 not checked. [2018-11-23 10:20:49,257 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 10:20:49,563 INFO L273 TraceCheckUtils]: 50: Hoare triple {1851#false} assume !false; {1851#false} is VALID [2018-11-23 10:20:49,564 INFO L273 TraceCheckUtils]: 49: Hoare triple {1851#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {1851#false} is VALID [2018-11-23 10:20:49,564 INFO L273 TraceCheckUtils]: 48: Hoare triple {1851#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {1851#false} is VALID [2018-11-23 10:20:49,565 INFO L268 TraceCheckUtils]: 47: Hoare quadruple {1850#true} {1851#false} #95#return; {1851#false} is VALID [2018-11-23 10:20:49,565 INFO L273 TraceCheckUtils]: 46: Hoare triple {1850#true} assume true; {1850#true} is VALID [2018-11-23 10:20:49,565 INFO L273 TraceCheckUtils]: 45: Hoare triple {1850#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1850#true} is VALID [2018-11-23 10:20:49,566 INFO L273 TraceCheckUtils]: 44: Hoare triple {1850#true} assume !~bvslt32(~i~1, ~N~0); {1850#true} is VALID [2018-11-23 10:20:49,566 INFO L273 TraceCheckUtils]: 43: Hoare triple {1850#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {1850#true} is VALID [2018-11-23 10:20:49,566 INFO L273 TraceCheckUtils]: 42: Hoare triple {1850#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {1850#true} is VALID [2018-11-23 10:20:49,567 INFO L273 TraceCheckUtils]: 41: Hoare triple {1850#true} assume !!~bvslt32(~i~1, ~N~0); {1850#true} is VALID [2018-11-23 10:20:49,567 INFO L273 TraceCheckUtils]: 40: Hoare triple {1850#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1850#true} is VALID [2018-11-23 10:20:49,567 INFO L256 TraceCheckUtils]: 39: Hoare triple {1851#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {1850#true} is VALID [2018-11-23 10:20:49,568 INFO L273 TraceCheckUtils]: 38: Hoare triple {1851#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {1851#false} is VALID [2018-11-23 10:20:49,568 INFO L273 TraceCheckUtils]: 37: Hoare triple {1851#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {1851#false} is VALID [2018-11-23 10:20:49,568 INFO L273 TraceCheckUtils]: 36: Hoare triple {1851#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {1851#false} is VALID [2018-11-23 10:20:49,569 INFO L268 TraceCheckUtils]: 35: Hoare quadruple {1850#true} {1851#false} #93#return; {1851#false} is VALID [2018-11-23 10:20:49,569 INFO L273 TraceCheckUtils]: 34: Hoare triple {1850#true} assume true; {1850#true} is VALID [2018-11-23 10:20:49,569 INFO L273 TraceCheckUtils]: 33: Hoare triple {1850#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {1850#true} is VALID [2018-11-23 10:20:49,569 INFO L273 TraceCheckUtils]: 32: Hoare triple {1850#true} assume !~bvslt32(~i~1, ~N~0); {1850#true} is VALID [2018-11-23 10:20:49,570 INFO L273 TraceCheckUtils]: 31: Hoare triple {1850#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {1850#true} is VALID [2018-11-23 10:20:49,570 INFO L273 TraceCheckUtils]: 30: Hoare triple {1850#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {1850#true} is VALID [2018-11-23 10:20:49,570 INFO L273 TraceCheckUtils]: 29: Hoare triple {1850#true} assume !!~bvslt32(~i~1, ~N~0); {1850#true} is VALID [2018-11-23 10:20:49,570 INFO L273 TraceCheckUtils]: 28: Hoare triple {1850#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {1850#true} is VALID [2018-11-23 10:20:49,571 INFO L256 TraceCheckUtils]: 27: Hoare triple {1851#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {1850#true} is VALID [2018-11-23 10:20:49,571 INFO L273 TraceCheckUtils]: 26: Hoare triple {1851#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {1851#false} is VALID [2018-11-23 10:20:49,573 INFO L268 TraceCheckUtils]: 25: Hoare quadruple {2090#(not (bvsgt ~N~0 (_ bv1 32)))} {1873#(bvsgt ~N~0 (_ bv1 32))} #91#return; {1851#false} is VALID [2018-11-23 10:20:49,576 INFO L273 TraceCheckUtils]: 24: Hoare triple {2090#(not (bvsgt ~N~0 (_ bv1 32)))} assume true; {2090#(not (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,576 INFO L273 TraceCheckUtils]: 23: Hoare triple {2090#(not (bvsgt ~N~0 (_ bv1 32)))} assume !(0bv32 != ~cnt~0);#res := 0bv32; {2090#(not (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,578 INFO L273 TraceCheckUtils]: 22: Hoare triple {2100#(or (bvslt rangesum_~i~1 ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} assume !~bvslt32(~i~1, ~N~0); {2090#(not (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:49,599 INFO L273 TraceCheckUtils]: 21: Hoare triple {2104#(or (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2100#(or (bvslt rangesum_~i~1 ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} is VALID [2018-11-23 10:20:49,600 INFO L273 TraceCheckUtils]: 20: Hoare triple {2104#(or (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2104#(or (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} is VALID [2018-11-23 10:20:49,601 INFO L273 TraceCheckUtils]: 19: Hoare triple {2104#(or (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} assume !!~bvslt32(~i~1, ~N~0); {2104#(or (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} is VALID [2018-11-23 10:20:49,602 INFO L273 TraceCheckUtils]: 18: Hoare triple {1850#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {2104#(or (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0) (not (bvsgt ~N~0 (_ bv1 32))))} is VALID [2018-11-23 10:20:49,602 INFO L256 TraceCheckUtils]: 17: Hoare triple {1873#(bvsgt ~N~0 (_ bv1 32))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {1850#true} is VALID [2018-11-23 10:20:49,603 INFO L273 TraceCheckUtils]: 16: Hoare triple {1873#(bvsgt ~N~0 (_ bv1 32))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {1873#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:49,604 INFO L268 TraceCheckUtils]: 15: Hoare quadruple {1850#true} {1873#(bvsgt ~N~0 (_ bv1 32))} #89#return; {1873#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:49,604 INFO L273 TraceCheckUtils]: 14: Hoare triple {1850#true} assume true; {1850#true} is VALID [2018-11-23 10:20:49,604 INFO L273 TraceCheckUtils]: 13: Hoare triple {1850#true} assume !~bvslt32(~i~0, ~N~0); {1850#true} is VALID [2018-11-23 10:20:49,604 INFO L273 TraceCheckUtils]: 12: Hoare triple {1850#true} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1850#true} is VALID [2018-11-23 10:20:49,605 INFO L273 TraceCheckUtils]: 11: Hoare triple {1850#true} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1850#true} is VALID [2018-11-23 10:20:49,605 INFO L273 TraceCheckUtils]: 10: Hoare triple {1850#true} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {1850#true} is VALID [2018-11-23 10:20:49,605 INFO L273 TraceCheckUtils]: 9: Hoare triple {1850#true} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {1850#true} is VALID [2018-11-23 10:20:49,606 INFO L273 TraceCheckUtils]: 8: Hoare triple {1850#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {1850#true} is VALID [2018-11-23 10:20:49,606 INFO L256 TraceCheckUtils]: 7: Hoare triple {1873#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {1850#true} is VALID [2018-11-23 10:20:49,607 INFO L273 TraceCheckUtils]: 6: Hoare triple {1850#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {1873#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:49,607 INFO L273 TraceCheckUtils]: 5: Hoare triple {1850#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {1850#true} is VALID [2018-11-23 10:20:49,607 INFO L256 TraceCheckUtils]: 4: Hoare triple {1850#true} call #t~ret13 := main(); {1850#true} is VALID [2018-11-23 10:20:49,607 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {1850#true} {1850#true} #85#return; {1850#true} is VALID [2018-11-23 10:20:49,607 INFO L273 TraceCheckUtils]: 2: Hoare triple {1850#true} assume true; {1850#true} is VALID [2018-11-23 10:20:49,608 INFO L273 TraceCheckUtils]: 1: Hoare triple {1850#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {1850#true} is VALID [2018-11-23 10:20:49,608 INFO L256 TraceCheckUtils]: 0: Hoare triple {1850#true} call ULTIMATE.init(); {1850#true} is VALID [2018-11-23 10:20:49,611 INFO L134 CoverageAnalysis]: Checked inductivity of 37 backedges. 0 proven. 19 refuted. 0 times theorem prover too weak. 18 trivial. 0 not checked. [2018-11-23 10:20:49,613 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 10:20:49,613 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [9, 6] total 12 [2018-11-23 10:20:49,614 INFO L78 Accepts]: Start accepts. Automaton has 12 states. Word has length 51 [2018-11-23 10:20:49,616 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:49,616 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 12 states. [2018-11-23 10:20:49,824 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 70 edges. 70 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:49,825 INFO L459 AbstractCegarLoop]: Interpolant automaton has 12 states [2018-11-23 10:20:49,825 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 12 interpolants. [2018-11-23 10:20:49,825 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=34, Invalid=98, Unknown=0, NotChecked=0, Total=132 [2018-11-23 10:20:49,826 INFO L87 Difference]: Start difference. First operand 42 states and 50 transitions. Second operand 12 states. [2018-11-23 10:20:53,736 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:53,737 INFO L93 Difference]: Finished difference Result 99 states and 127 transitions. [2018-11-23 10:20:53,737 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 14 states. [2018-11-23 10:20:53,737 INFO L78 Accepts]: Start accepts. Automaton has 12 states. Word has length 51 [2018-11-23 10:20:53,737 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:20:53,737 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 12 states. [2018-11-23 10:20:53,741 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 14 states to 14 states and 113 transitions. [2018-11-23 10:20:53,741 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 12 states. [2018-11-23 10:20:53,744 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 14 states to 14 states and 113 transitions. [2018-11-23 10:20:53,745 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 14 states and 113 transitions. [2018-11-23 10:20:54,362 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 113 edges. 113 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:54,365 INFO L225 Difference]: With dead ends: 99 [2018-11-23 10:20:54,365 INFO L226 Difference]: Without dead ends: 75 [2018-11-23 10:20:54,366 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 106 GetRequests, 88 SyntacticMatches, 4 SemanticMatches, 14 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 40 ImplicationChecksByTransitivity, 0.4s TimeCoverageRelationStatistics Valid=60, Invalid=180, Unknown=0, NotChecked=0, Total=240 [2018-11-23 10:20:54,367 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 75 states. [2018-11-23 10:20:54,409 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 75 to 68. [2018-11-23 10:20:54,409 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:20:54,409 INFO L82 GeneralOperation]: Start isEquivalent. First operand 75 states. Second operand 68 states. [2018-11-23 10:20:54,409 INFO L74 IsIncluded]: Start isIncluded. First operand 75 states. Second operand 68 states. [2018-11-23 10:20:54,410 INFO L87 Difference]: Start difference. First operand 75 states. Second operand 68 states. [2018-11-23 10:20:54,413 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:54,414 INFO L93 Difference]: Finished difference Result 75 states and 87 transitions. [2018-11-23 10:20:54,414 INFO L276 IsEmpty]: Start isEmpty. Operand 75 states and 87 transitions. [2018-11-23 10:20:54,414 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:54,415 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:54,415 INFO L74 IsIncluded]: Start isIncluded. First operand 68 states. Second operand 75 states. [2018-11-23 10:20:54,415 INFO L87 Difference]: Start difference. First operand 68 states. Second operand 75 states. [2018-11-23 10:20:54,418 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:54,419 INFO L93 Difference]: Finished difference Result 75 states and 87 transitions. [2018-11-23 10:20:54,419 INFO L276 IsEmpty]: Start isEmpty. Operand 75 states and 87 transitions. [2018-11-23 10:20:54,419 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:54,419 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:54,420 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:20:54,420 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:20:54,420 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 68 states. [2018-11-23 10:20:54,423 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 68 states to 68 states and 81 transitions. [2018-11-23 10:20:54,423 INFO L78 Accepts]: Start accepts. Automaton has 68 states and 81 transitions. Word has length 51 [2018-11-23 10:20:54,423 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:20:54,423 INFO L480 AbstractCegarLoop]: Abstraction has 68 states and 81 transitions. [2018-11-23 10:20:54,424 INFO L481 AbstractCegarLoop]: Interpolant automaton has 12 states. [2018-11-23 10:20:54,424 INFO L276 IsEmpty]: Start isEmpty. Operand 68 states and 81 transitions. [2018-11-23 10:20:54,425 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 61 [2018-11-23 10:20:54,425 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:54,425 INFO L402 BasicCegarLoop]: trace histogram [6, 6, 6, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:54,425 INFO L423 AbstractCegarLoop]: === Iteration 7 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:54,425 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:54,426 INFO L82 PathProgramCache]: Analyzing trace with hash 456134489, now seen corresponding path program 2 times [2018-11-23 10:20:54,426 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:54,426 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 8 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 8 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:54,451 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST1 [2018-11-23 10:20:54,550 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 10:20:54,550 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 10:20:54,592 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:54,594 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:54,823 INFO L256 TraceCheckUtils]: 0: Hoare triple {2554#true} call ULTIMATE.init(); {2554#true} is VALID [2018-11-23 10:20:54,824 INFO L273 TraceCheckUtils]: 1: Hoare triple {2554#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {2554#true} is VALID [2018-11-23 10:20:54,824 INFO L273 TraceCheckUtils]: 2: Hoare triple {2554#true} assume true; {2554#true} is VALID [2018-11-23 10:20:54,824 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {2554#true} {2554#true} #85#return; {2554#true} is VALID [2018-11-23 10:20:54,824 INFO L256 TraceCheckUtils]: 4: Hoare triple {2554#true} call #t~ret13 := main(); {2554#true} is VALID [2018-11-23 10:20:54,824 INFO L273 TraceCheckUtils]: 5: Hoare triple {2554#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {2554#true} is VALID [2018-11-23 10:20:54,825 INFO L273 TraceCheckUtils]: 6: Hoare triple {2554#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {2577#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:54,825 INFO L256 TraceCheckUtils]: 7: Hoare triple {2577#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {2577#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:20:54,826 INFO L273 TraceCheckUtils]: 8: Hoare triple {2577#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {2584#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,826 INFO L273 TraceCheckUtils]: 9: Hoare triple {2584#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {2584#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,835 INFO L273 TraceCheckUtils]: 10: Hoare triple {2584#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {2591#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,843 INFO L273 TraceCheckUtils]: 11: Hoare triple {2591#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {2591#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,844 INFO L273 TraceCheckUtils]: 12: Hoare triple {2591#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {2598#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,845 INFO L273 TraceCheckUtils]: 13: Hoare triple {2598#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvslt32(~i~0, ~N~0); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,847 INFO L273 TraceCheckUtils]: 14: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume true; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,849 INFO L268 TraceCheckUtils]: 15: Hoare quadruple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} {2577#(bvsgt ~N~0 (_ bv1 32))} #89#return; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,858 INFO L273 TraceCheckUtils]: 16: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,871 INFO L256 TraceCheckUtils]: 17: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,884 INFO L273 TraceCheckUtils]: 18: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,896 INFO L273 TraceCheckUtils]: 19: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~1, ~N~0); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,898 INFO L273 TraceCheckUtils]: 20: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,898 INFO L273 TraceCheckUtils]: 21: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,900 INFO L273 TraceCheckUtils]: 22: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~1, ~N~0); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,900 INFO L273 TraceCheckUtils]: 23: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,902 INFO L273 TraceCheckUtils]: 24: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,902 INFO L273 TraceCheckUtils]: 25: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvslt32(~i~1, ~N~0); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,904 INFO L273 TraceCheckUtils]: 26: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !(0bv32 != ~cnt~0);#res := 0bv32; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,906 INFO L273 TraceCheckUtils]: 27: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume true; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,908 INFO L268 TraceCheckUtils]: 28: Hoare quadruple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} #91#return; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,910 INFO L273 TraceCheckUtils]: 29: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,912 INFO L256 TraceCheckUtils]: 30: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,912 INFO L273 TraceCheckUtils]: 31: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,914 INFO L273 TraceCheckUtils]: 32: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~1, ~N~0); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,914 INFO L273 TraceCheckUtils]: 33: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,917 INFO L273 TraceCheckUtils]: 34: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,917 INFO L273 TraceCheckUtils]: 35: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~1, ~N~0); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,919 INFO L273 TraceCheckUtils]: 36: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,919 INFO L273 TraceCheckUtils]: 37: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,922 INFO L273 TraceCheckUtils]: 38: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvslt32(~i~1, ~N~0); {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,925 INFO L273 TraceCheckUtils]: 39: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume !(0bv32 != ~cnt~0);#res := 0bv32; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,925 INFO L273 TraceCheckUtils]: 40: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} assume true; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,927 INFO L268 TraceCheckUtils]: 41: Hoare quadruple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} #93#return; {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,927 INFO L273 TraceCheckUtils]: 42: Hoare triple {2602#(and (not (bvslt (_ bv2 32) ~N~0)) (bvsgt ~N~0 (_ bv1 32)))} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {2690#(and (not (bvslt (_ bv2 32) ~N~0)) (= main_~i~2 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:20:54,929 INFO L273 TraceCheckUtils]: 43: Hoare triple {2690#(and (not (bvslt (_ bv2 32) ~N~0)) (= main_~i~2 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {2555#false} is VALID [2018-11-23 10:20:54,929 INFO L273 TraceCheckUtils]: 44: Hoare triple {2555#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {2555#false} is VALID [2018-11-23 10:20:54,929 INFO L256 TraceCheckUtils]: 45: Hoare triple {2555#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {2555#false} is VALID [2018-11-23 10:20:54,929 INFO L273 TraceCheckUtils]: 46: Hoare triple {2555#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {2555#false} is VALID [2018-11-23 10:20:54,930 INFO L273 TraceCheckUtils]: 47: Hoare triple {2555#false} assume !!~bvslt32(~i~1, ~N~0); {2555#false} is VALID [2018-11-23 10:20:54,930 INFO L273 TraceCheckUtils]: 48: Hoare triple {2555#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2555#false} is VALID [2018-11-23 10:20:54,930 INFO L273 TraceCheckUtils]: 49: Hoare triple {2555#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2555#false} is VALID [2018-11-23 10:20:54,930 INFO L273 TraceCheckUtils]: 50: Hoare triple {2555#false} assume !!~bvslt32(~i~1, ~N~0); {2555#false} is VALID [2018-11-23 10:20:54,930 INFO L273 TraceCheckUtils]: 51: Hoare triple {2555#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2555#false} is VALID [2018-11-23 10:20:54,931 INFO L273 TraceCheckUtils]: 52: Hoare triple {2555#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2555#false} is VALID [2018-11-23 10:20:54,931 INFO L273 TraceCheckUtils]: 53: Hoare triple {2555#false} assume !~bvslt32(~i~1, ~N~0); {2555#false} is VALID [2018-11-23 10:20:54,931 INFO L273 TraceCheckUtils]: 54: Hoare triple {2555#false} assume !(0bv32 != ~cnt~0);#res := 0bv32; {2555#false} is VALID [2018-11-23 10:20:54,931 INFO L273 TraceCheckUtils]: 55: Hoare triple {2555#false} assume true; {2555#false} is VALID [2018-11-23 10:20:54,931 INFO L268 TraceCheckUtils]: 56: Hoare quadruple {2555#false} {2555#false} #95#return; {2555#false} is VALID [2018-11-23 10:20:54,932 INFO L273 TraceCheckUtils]: 57: Hoare triple {2555#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {2555#false} is VALID [2018-11-23 10:20:54,932 INFO L273 TraceCheckUtils]: 58: Hoare triple {2555#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {2555#false} is VALID [2018-11-23 10:20:54,932 INFO L273 TraceCheckUtils]: 59: Hoare triple {2555#false} assume !false; {2555#false} is VALID [2018-11-23 10:20:54,938 INFO L134 CoverageAnalysis]: Checked inductivity of 82 backedges. 42 proven. 4 refuted. 0 times theorem prover too weak. 36 trivial. 0 not checked. [2018-11-23 10:20:54,938 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 10:20:55,179 INFO L273 TraceCheckUtils]: 59: Hoare triple {2555#false} assume !false; {2555#false} is VALID [2018-11-23 10:20:55,179 INFO L273 TraceCheckUtils]: 58: Hoare triple {2555#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {2555#false} is VALID [2018-11-23 10:20:55,180 INFO L273 TraceCheckUtils]: 57: Hoare triple {2555#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {2555#false} is VALID [2018-11-23 10:20:55,180 INFO L268 TraceCheckUtils]: 56: Hoare quadruple {2554#true} {2555#false} #95#return; {2555#false} is VALID [2018-11-23 10:20:55,180 INFO L273 TraceCheckUtils]: 55: Hoare triple {2554#true} assume true; {2554#true} is VALID [2018-11-23 10:20:55,180 INFO L273 TraceCheckUtils]: 54: Hoare triple {2554#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,181 INFO L273 TraceCheckUtils]: 53: Hoare triple {2554#true} assume !~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,181 INFO L273 TraceCheckUtils]: 52: Hoare triple {2554#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2554#true} is VALID [2018-11-23 10:20:55,181 INFO L273 TraceCheckUtils]: 51: Hoare triple {2554#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2554#true} is VALID [2018-11-23 10:20:55,181 INFO L273 TraceCheckUtils]: 50: Hoare triple {2554#true} assume !!~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,181 INFO L273 TraceCheckUtils]: 49: Hoare triple {2554#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2554#true} is VALID [2018-11-23 10:20:55,182 INFO L273 TraceCheckUtils]: 48: Hoare triple {2554#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2554#true} is VALID [2018-11-23 10:20:55,182 INFO L273 TraceCheckUtils]: 47: Hoare triple {2554#true} assume !!~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,182 INFO L273 TraceCheckUtils]: 46: Hoare triple {2554#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,182 INFO L256 TraceCheckUtils]: 45: Hoare triple {2555#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {2554#true} is VALID [2018-11-23 10:20:55,182 INFO L273 TraceCheckUtils]: 44: Hoare triple {2555#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {2555#false} is VALID [2018-11-23 10:20:55,183 INFO L273 TraceCheckUtils]: 43: Hoare triple {2790#(bvslt main_~i~2 (bvadd ~N~0 (_ bv4294967295 32)))} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {2555#false} is VALID [2018-11-23 10:20:55,200 INFO L273 TraceCheckUtils]: 42: Hoare triple {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {2790#(bvslt main_~i~2 (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:20:55,210 INFO L268 TraceCheckUtils]: 41: Hoare quadruple {2554#true} {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} #93#return; {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:20:55,210 INFO L273 TraceCheckUtils]: 40: Hoare triple {2554#true} assume true; {2554#true} is VALID [2018-11-23 10:20:55,211 INFO L273 TraceCheckUtils]: 39: Hoare triple {2554#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,211 INFO L273 TraceCheckUtils]: 38: Hoare triple {2554#true} assume !~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,211 INFO L273 TraceCheckUtils]: 37: Hoare triple {2554#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2554#true} is VALID [2018-11-23 10:20:55,211 INFO L273 TraceCheckUtils]: 36: Hoare triple {2554#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2554#true} is VALID [2018-11-23 10:20:55,211 INFO L273 TraceCheckUtils]: 35: Hoare triple {2554#true} assume !!~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,212 INFO L273 TraceCheckUtils]: 34: Hoare triple {2554#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2554#true} is VALID [2018-11-23 10:20:55,212 INFO L273 TraceCheckUtils]: 33: Hoare triple {2554#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2554#true} is VALID [2018-11-23 10:20:55,212 INFO L273 TraceCheckUtils]: 32: Hoare triple {2554#true} assume !!~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,212 INFO L273 TraceCheckUtils]: 31: Hoare triple {2554#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,212 INFO L256 TraceCheckUtils]: 30: Hoare triple {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {2554#true} is VALID [2018-11-23 10:20:55,227 INFO L273 TraceCheckUtils]: 29: Hoare triple {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:20:55,241 INFO L268 TraceCheckUtils]: 28: Hoare quadruple {2554#true} {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} #91#return; {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:20:55,241 INFO L273 TraceCheckUtils]: 27: Hoare triple {2554#true} assume true; {2554#true} is VALID [2018-11-23 10:20:55,242 INFO L273 TraceCheckUtils]: 26: Hoare triple {2554#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,242 INFO L273 TraceCheckUtils]: 25: Hoare triple {2554#true} assume !~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,242 INFO L273 TraceCheckUtils]: 24: Hoare triple {2554#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2554#true} is VALID [2018-11-23 10:20:55,242 INFO L273 TraceCheckUtils]: 23: Hoare triple {2554#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2554#true} is VALID [2018-11-23 10:20:55,242 INFO L273 TraceCheckUtils]: 22: Hoare triple {2554#true} assume !!~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,243 INFO L273 TraceCheckUtils]: 21: Hoare triple {2554#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {2554#true} is VALID [2018-11-23 10:20:55,243 INFO L273 TraceCheckUtils]: 20: Hoare triple {2554#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {2554#true} is VALID [2018-11-23 10:20:55,243 INFO L273 TraceCheckUtils]: 19: Hoare triple {2554#true} assume !!~bvslt32(~i~1, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,243 INFO L273 TraceCheckUtils]: 18: Hoare triple {2554#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,243 INFO L256 TraceCheckUtils]: 17: Hoare triple {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {2554#true} is VALID [2018-11-23 10:20:55,253 INFO L273 TraceCheckUtils]: 16: Hoare triple {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:20:55,266 INFO L268 TraceCheckUtils]: 15: Hoare quadruple {2554#true} {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} #89#return; {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:20:55,267 INFO L273 TraceCheckUtils]: 14: Hoare triple {2554#true} assume true; {2554#true} is VALID [2018-11-23 10:20:55,267 INFO L273 TraceCheckUtils]: 13: Hoare triple {2554#true} assume !~bvslt32(~i~0, ~N~0); {2554#true} is VALID [2018-11-23 10:20:55,267 INFO L273 TraceCheckUtils]: 12: Hoare triple {2554#true} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {2554#true} is VALID [2018-11-23 10:20:55,267 INFO L273 TraceCheckUtils]: 11: Hoare triple {2554#true} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {2554#true} is VALID [2018-11-23 10:20:55,268 INFO L273 TraceCheckUtils]: 10: Hoare triple {2554#true} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {2554#true} is VALID [2018-11-23 10:20:55,268 INFO L273 TraceCheckUtils]: 9: Hoare triple {2554#true} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {2554#true} is VALID [2018-11-23 10:20:55,268 INFO L273 TraceCheckUtils]: 8: Hoare triple {2554#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,268 INFO L256 TraceCheckUtils]: 7: Hoare triple {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} call init_nondet(~#x~0.base, ~#x~0.offset); {2554#true} is VALID [2018-11-23 10:20:55,283 INFO L273 TraceCheckUtils]: 6: Hoare triple {2554#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {2794#(bvslt (_ bv0 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:20:55,284 INFO L273 TraceCheckUtils]: 5: Hoare triple {2554#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {2554#true} is VALID [2018-11-23 10:20:55,284 INFO L256 TraceCheckUtils]: 4: Hoare triple {2554#true} call #t~ret13 := main(); {2554#true} is VALID [2018-11-23 10:20:55,284 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {2554#true} {2554#true} #85#return; {2554#true} is VALID [2018-11-23 10:20:55,284 INFO L273 TraceCheckUtils]: 2: Hoare triple {2554#true} assume true; {2554#true} is VALID [2018-11-23 10:20:55,285 INFO L273 TraceCheckUtils]: 1: Hoare triple {2554#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {2554#true} is VALID [2018-11-23 10:20:55,285 INFO L256 TraceCheckUtils]: 0: Hoare triple {2554#true} call ULTIMATE.init(); {2554#true} is VALID [2018-11-23 10:20:55,287 INFO L134 CoverageAnalysis]: Checked inductivity of 82 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 82 trivial. 0 not checked. [2018-11-23 10:20:55,290 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 1 imperfect interpolant sequences. [2018-11-23 10:20:55,290 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [4] imperfect sequences [8] total 10 [2018-11-23 10:20:55,291 INFO L78 Accepts]: Start accepts. Automaton has 10 states. Word has length 60 [2018-11-23 10:20:55,291 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:55,291 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 10 states. [2018-11-23 10:20:55,554 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 69 edges. 69 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:55,554 INFO L459 AbstractCegarLoop]: Interpolant automaton has 10 states [2018-11-23 10:20:55,554 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 10 interpolants. [2018-11-23 10:20:55,555 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=30, Invalid=60, Unknown=0, NotChecked=0, Total=90 [2018-11-23 10:20:55,555 INFO L87 Difference]: Start difference. First operand 68 states and 81 transitions. Second operand 10 states. [2018-11-23 10:20:58,402 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:58,402 INFO L93 Difference]: Finished difference Result 110 states and 129 transitions. [2018-11-23 10:20:58,402 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 11 states. [2018-11-23 10:20:58,403 INFO L78 Accepts]: Start accepts. Automaton has 10 states. Word has length 60 [2018-11-23 10:20:58,403 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:20:58,403 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 10 states. [2018-11-23 10:20:58,405 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 11 states to 11 states and 91 transitions. [2018-11-23 10:20:58,406 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 10 states. [2018-11-23 10:20:58,408 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 11 states to 11 states and 91 transitions. [2018-11-23 10:20:58,408 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 11 states and 91 transitions. [2018-11-23 10:20:58,807 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 91 edges. 91 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:58,809 INFO L225 Difference]: With dead ends: 110 [2018-11-23 10:20:58,809 INFO L226 Difference]: Without dead ends: 76 [2018-11-23 10:20:58,810 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 122 GetRequests, 110 SyntacticMatches, 1 SemanticMatches, 11 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 29 ImplicationChecksByTransitivity, 0.2s TimeCoverageRelationStatistics Valid=50, Invalid=106, Unknown=0, NotChecked=0, Total=156 [2018-11-23 10:20:58,810 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 76 states. [2018-11-23 10:20:58,847 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 76 to 70. [2018-11-23 10:20:58,847 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:20:58,848 INFO L82 GeneralOperation]: Start isEquivalent. First operand 76 states. Second operand 70 states. [2018-11-23 10:20:58,848 INFO L74 IsIncluded]: Start isIncluded. First operand 76 states. Second operand 70 states. [2018-11-23 10:20:58,848 INFO L87 Difference]: Start difference. First operand 76 states. Second operand 70 states. [2018-11-23 10:20:58,852 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:58,852 INFO L93 Difference]: Finished difference Result 76 states and 88 transitions. [2018-11-23 10:20:58,852 INFO L276 IsEmpty]: Start isEmpty. Operand 76 states and 88 transitions. [2018-11-23 10:20:58,852 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:58,853 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:58,853 INFO L74 IsIncluded]: Start isIncluded. First operand 70 states. Second operand 76 states. [2018-11-23 10:20:58,853 INFO L87 Difference]: Start difference. First operand 70 states. Second operand 76 states. [2018-11-23 10:20:58,856 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:20:58,856 INFO L93 Difference]: Finished difference Result 76 states and 88 transitions. [2018-11-23 10:20:58,856 INFO L276 IsEmpty]: Start isEmpty. Operand 76 states and 88 transitions. [2018-11-23 10:20:58,856 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:20:58,856 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:20:58,856 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:20:58,856 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:20:58,857 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 70 states. [2018-11-23 10:20:58,859 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 70 states to 70 states and 83 transitions. [2018-11-23 10:20:58,860 INFO L78 Accepts]: Start accepts. Automaton has 70 states and 83 transitions. Word has length 60 [2018-11-23 10:20:58,860 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:20:58,860 INFO L480 AbstractCegarLoop]: Abstraction has 70 states and 83 transitions. [2018-11-23 10:20:58,860 INFO L481 AbstractCegarLoop]: Interpolant automaton has 10 states. [2018-11-23 10:20:58,860 INFO L276 IsEmpty]: Start isEmpty. Operand 70 states and 83 transitions. [2018-11-23 10:20:58,861 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 63 [2018-11-23 10:20:58,861 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:20:58,861 INFO L402 BasicCegarLoop]: trace histogram [6, 6, 6, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:20:58,862 INFO L423 AbstractCegarLoop]: === Iteration 8 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:20:58,862 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:20:58,862 INFO L82 PathProgramCache]: Analyzing trace with hash -619650601, now seen corresponding path program 1 times [2018-11-23 10:20:58,862 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:20:58,862 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 9 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 9 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:20:58,883 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 10:20:58,986 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:59,021 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:20:59,023 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:20:59,190 INFO L256 TraceCheckUtils]: 0: Hoare triple {3330#true} call ULTIMATE.init(); {3330#true} is VALID [2018-11-23 10:20:59,190 INFO L273 TraceCheckUtils]: 1: Hoare triple {3330#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {3330#true} is VALID [2018-11-23 10:20:59,190 INFO L273 TraceCheckUtils]: 2: Hoare triple {3330#true} assume true; {3330#true} is VALID [2018-11-23 10:20:59,191 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {3330#true} {3330#true} #85#return; {3330#true} is VALID [2018-11-23 10:20:59,191 INFO L256 TraceCheckUtils]: 4: Hoare triple {3330#true} call #t~ret13 := main(); {3330#true} is VALID [2018-11-23 10:20:59,191 INFO L273 TraceCheckUtils]: 5: Hoare triple {3330#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {3330#true} is VALID [2018-11-23 10:20:59,191 INFO L273 TraceCheckUtils]: 6: Hoare triple {3330#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {3330#true} is VALID [2018-11-23 10:20:59,191 INFO L256 TraceCheckUtils]: 7: Hoare triple {3330#true} call init_nondet(~#x~0.base, ~#x~0.offset); {3330#true} is VALID [2018-11-23 10:20:59,191 INFO L273 TraceCheckUtils]: 8: Hoare triple {3330#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {3330#true} is VALID [2018-11-23 10:20:59,192 INFO L273 TraceCheckUtils]: 9: Hoare triple {3330#true} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {3330#true} is VALID [2018-11-23 10:20:59,192 INFO L273 TraceCheckUtils]: 10: Hoare triple {3330#true} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {3330#true} is VALID [2018-11-23 10:20:59,192 INFO L273 TraceCheckUtils]: 11: Hoare triple {3330#true} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {3330#true} is VALID [2018-11-23 10:20:59,192 INFO L273 TraceCheckUtils]: 12: Hoare triple {3330#true} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {3330#true} is VALID [2018-11-23 10:20:59,193 INFO L273 TraceCheckUtils]: 13: Hoare triple {3330#true} assume !~bvslt32(~i~0, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,193 INFO L273 TraceCheckUtils]: 14: Hoare triple {3330#true} assume true; {3330#true} is VALID [2018-11-23 10:20:59,193 INFO L268 TraceCheckUtils]: 15: Hoare quadruple {3330#true} {3330#true} #89#return; {3330#true} is VALID [2018-11-23 10:20:59,193 INFO L273 TraceCheckUtils]: 16: Hoare triple {3330#true} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {3330#true} is VALID [2018-11-23 10:20:59,194 INFO L256 TraceCheckUtils]: 17: Hoare triple {3330#true} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {3330#true} is VALID [2018-11-23 10:20:59,194 INFO L273 TraceCheckUtils]: 18: Hoare triple {3330#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3330#true} is VALID [2018-11-23 10:20:59,194 INFO L273 TraceCheckUtils]: 19: Hoare triple {3330#true} assume !!~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,194 INFO L273 TraceCheckUtils]: 20: Hoare triple {3330#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3330#true} is VALID [2018-11-23 10:20:59,194 INFO L273 TraceCheckUtils]: 21: Hoare triple {3330#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3330#true} is VALID [2018-11-23 10:20:59,195 INFO L273 TraceCheckUtils]: 22: Hoare triple {3330#true} assume !!~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,195 INFO L273 TraceCheckUtils]: 23: Hoare triple {3330#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3330#true} is VALID [2018-11-23 10:20:59,195 INFO L273 TraceCheckUtils]: 24: Hoare triple {3330#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3330#true} is VALID [2018-11-23 10:20:59,195 INFO L273 TraceCheckUtils]: 25: Hoare triple {3330#true} assume !~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,210 INFO L273 TraceCheckUtils]: 26: Hoare triple {3330#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {3413#(= (_ bv0 32) |rangesum_#res|)} is VALID [2018-11-23 10:20:59,224 INFO L273 TraceCheckUtils]: 27: Hoare triple {3413#(= (_ bv0 32) |rangesum_#res|)} assume true; {3413#(= (_ bv0 32) |rangesum_#res|)} is VALID [2018-11-23 10:20:59,238 INFO L268 TraceCheckUtils]: 28: Hoare quadruple {3413#(= (_ bv0 32) |rangesum_#res|)} {3330#true} #91#return; {3420#(= (_ bv0 32) |main_#t~ret5|)} is VALID [2018-11-23 10:20:59,244 INFO L273 TraceCheckUtils]: 29: Hoare triple {3420#(= (_ bv0 32) |main_#t~ret5|)} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {3424#(= main_~ret~1 (_ bv0 32))} is VALID [2018-11-23 10:20:59,244 INFO L256 TraceCheckUtils]: 30: Hoare triple {3424#(= main_~ret~1 (_ bv0 32))} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {3330#true} is VALID [2018-11-23 10:20:59,244 INFO L273 TraceCheckUtils]: 31: Hoare triple {3330#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3330#true} is VALID [2018-11-23 10:20:59,244 INFO L273 TraceCheckUtils]: 32: Hoare triple {3330#true} assume !!~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,245 INFO L273 TraceCheckUtils]: 33: Hoare triple {3330#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3330#true} is VALID [2018-11-23 10:20:59,245 INFO L273 TraceCheckUtils]: 34: Hoare triple {3330#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3330#true} is VALID [2018-11-23 10:20:59,245 INFO L273 TraceCheckUtils]: 35: Hoare triple {3330#true} assume !!~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,245 INFO L273 TraceCheckUtils]: 36: Hoare triple {3330#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3330#true} is VALID [2018-11-23 10:20:59,245 INFO L273 TraceCheckUtils]: 37: Hoare triple {3330#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3330#true} is VALID [2018-11-23 10:20:59,246 INFO L273 TraceCheckUtils]: 38: Hoare triple {3330#true} assume !~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,246 INFO L273 TraceCheckUtils]: 39: Hoare triple {3330#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {3413#(= (_ bv0 32) |rangesum_#res|)} is VALID [2018-11-23 10:20:59,248 INFO L273 TraceCheckUtils]: 40: Hoare triple {3413#(= (_ bv0 32) |rangesum_#res|)} assume true; {3413#(= (_ bv0 32) |rangesum_#res|)} is VALID [2018-11-23 10:20:59,250 INFO L268 TraceCheckUtils]: 41: Hoare quadruple {3413#(= (_ bv0 32) |rangesum_#res|)} {3424#(= main_~ret~1 (_ bv0 32))} #93#return; {3461#(and (= (_ bv0 32) |main_#t~ret8|) (= main_~ret~1 (_ bv0 32)))} is VALID [2018-11-23 10:20:59,250 INFO L273 TraceCheckUtils]: 42: Hoare triple {3461#(and (= (_ bv0 32) |main_#t~ret8|) (= main_~ret~1 (_ bv0 32)))} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} is VALID [2018-11-23 10:20:59,252 INFO L273 TraceCheckUtils]: 43: Hoare triple {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} is VALID [2018-11-23 10:20:59,252 INFO L273 TraceCheckUtils]: 44: Hoare triple {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} is VALID [2018-11-23 10:20:59,253 INFO L273 TraceCheckUtils]: 45: Hoare triple {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} is VALID [2018-11-23 10:20:59,254 INFO L273 TraceCheckUtils]: 46: Hoare triple {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} is VALID [2018-11-23 10:20:59,254 INFO L256 TraceCheckUtils]: 47: Hoare triple {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {3330#true} is VALID [2018-11-23 10:20:59,254 INFO L273 TraceCheckUtils]: 48: Hoare triple {3330#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3330#true} is VALID [2018-11-23 10:20:59,255 INFO L273 TraceCheckUtils]: 49: Hoare triple {3330#true} assume !!~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,255 INFO L273 TraceCheckUtils]: 50: Hoare triple {3330#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3330#true} is VALID [2018-11-23 10:20:59,255 INFO L273 TraceCheckUtils]: 51: Hoare triple {3330#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3330#true} is VALID [2018-11-23 10:20:59,256 INFO L273 TraceCheckUtils]: 52: Hoare triple {3330#true} assume !!~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,256 INFO L273 TraceCheckUtils]: 53: Hoare triple {3330#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3330#true} is VALID [2018-11-23 10:20:59,257 INFO L273 TraceCheckUtils]: 54: Hoare triple {3330#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3330#true} is VALID [2018-11-23 10:20:59,257 INFO L273 TraceCheckUtils]: 55: Hoare triple {3330#true} assume !~bvslt32(~i~1, ~N~0); {3330#true} is VALID [2018-11-23 10:20:59,266 INFO L273 TraceCheckUtils]: 56: Hoare triple {3330#true} assume !(0bv32 != ~cnt~0);#res := 0bv32; {3413#(= (_ bv0 32) |rangesum_#res|)} is VALID [2018-11-23 10:20:59,275 INFO L273 TraceCheckUtils]: 57: Hoare triple {3413#(= (_ bv0 32) |rangesum_#res|)} assume true; {3413#(= (_ bv0 32) |rangesum_#res|)} is VALID [2018-11-23 10:20:59,285 INFO L268 TraceCheckUtils]: 58: Hoare quadruple {3413#(= (_ bv0 32) |rangesum_#res|)} {3465#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)))} #95#return; {3514#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)) (= |main_#t~ret12| (_ bv0 32)))} is VALID [2018-11-23 10:20:59,286 INFO L273 TraceCheckUtils]: 59: Hoare triple {3514#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)) (= |main_#t~ret12| (_ bv0 32)))} ~ret5~0 := #t~ret12;havoc #t~ret12; {3518#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)) (= main_~ret5~0 (_ bv0 32)))} is VALID [2018-11-23 10:20:59,287 INFO L273 TraceCheckUtils]: 60: Hoare triple {3518#(and (= main_~ret2~0 (_ bv0 32)) (= main_~ret~1 (_ bv0 32)) (= main_~ret5~0 (_ bv0 32)))} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {3331#false} is VALID [2018-11-23 10:20:59,287 INFO L273 TraceCheckUtils]: 61: Hoare triple {3331#false} assume !false; {3331#false} is VALID [2018-11-23 10:20:59,291 INFO L134 CoverageAnalysis]: Checked inductivity of 83 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 83 trivial. 0 not checked. [2018-11-23 10:20:59,291 INFO L312 TraceCheckSpWp]: Omiting computation of backward sequence because forward sequence was already perfect [2018-11-23 10:20:59,294 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 10:20:59,294 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [9] imperfect sequences [] total 9 [2018-11-23 10:20:59,294 INFO L78 Accepts]: Start accepts. Automaton has 9 states. Word has length 62 [2018-11-23 10:20:59,295 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:20:59,295 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 9 states. [2018-11-23 10:20:59,364 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 37 edges. 37 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:20:59,364 INFO L459 AbstractCegarLoop]: Interpolant automaton has 9 states [2018-11-23 10:20:59,365 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 9 interpolants. [2018-11-23 10:20:59,365 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=21, Invalid=51, Unknown=0, NotChecked=0, Total=72 [2018-11-23 10:20:59,365 INFO L87 Difference]: Start difference. First operand 70 states and 83 transitions. Second operand 9 states. [2018-11-23 10:21:00,932 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:00,932 INFO L93 Difference]: Finished difference Result 98 states and 118 transitions. [2018-11-23 10:21:00,932 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 9 states. [2018-11-23 10:21:00,933 INFO L78 Accepts]: Start accepts. Automaton has 9 states. Word has length 62 [2018-11-23 10:21:00,933 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:21:00,933 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 9 states. [2018-11-23 10:21:00,935 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 9 states to 9 states and 72 transitions. [2018-11-23 10:21:00,936 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 9 states. [2018-11-23 10:21:00,938 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 9 states to 9 states and 72 transitions. [2018-11-23 10:21:00,938 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 9 states and 72 transitions. [2018-11-23 10:21:01,151 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 72 edges. 72 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:21:01,157 INFO L225 Difference]: With dead ends: 98 [2018-11-23 10:21:01,157 INFO L226 Difference]: Without dead ends: 71 [2018-11-23 10:21:01,158 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 61 GetRequests, 54 SyntacticMatches, 0 SemanticMatches, 7 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=21, Invalid=51, Unknown=0, NotChecked=0, Total=72 [2018-11-23 10:21:01,158 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 71 states. [2018-11-23 10:21:01,226 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 71 to 57. [2018-11-23 10:21:01,226 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:21:01,226 INFO L82 GeneralOperation]: Start isEquivalent. First operand 71 states. Second operand 57 states. [2018-11-23 10:21:01,227 INFO L74 IsIncluded]: Start isIncluded. First operand 71 states. Second operand 57 states. [2018-11-23 10:21:01,227 INFO L87 Difference]: Start difference. First operand 71 states. Second operand 57 states. [2018-11-23 10:21:01,230 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:01,231 INFO L93 Difference]: Finished difference Result 71 states and 86 transitions. [2018-11-23 10:21:01,231 INFO L276 IsEmpty]: Start isEmpty. Operand 71 states and 86 transitions. [2018-11-23 10:21:01,232 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:21:01,232 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:21:01,232 INFO L74 IsIncluded]: Start isIncluded. First operand 57 states. Second operand 71 states. [2018-11-23 10:21:01,232 INFO L87 Difference]: Start difference. First operand 57 states. Second operand 71 states. [2018-11-23 10:21:01,235 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:01,235 INFO L93 Difference]: Finished difference Result 71 states and 86 transitions. [2018-11-23 10:21:01,236 INFO L276 IsEmpty]: Start isEmpty. Operand 71 states and 86 transitions. [2018-11-23 10:21:01,236 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:21:01,236 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:21:01,237 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:21:01,237 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:21:01,237 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 57 states. [2018-11-23 10:21:01,239 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 57 states to 57 states and 71 transitions. [2018-11-23 10:21:01,239 INFO L78 Accepts]: Start accepts. Automaton has 57 states and 71 transitions. Word has length 62 [2018-11-23 10:21:01,239 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:21:01,240 INFO L480 AbstractCegarLoop]: Abstraction has 57 states and 71 transitions. [2018-11-23 10:21:01,240 INFO L481 AbstractCegarLoop]: Interpolant automaton has 9 states. [2018-11-23 10:21:01,240 INFO L276 IsEmpty]: Start isEmpty. Operand 57 states and 71 transitions. [2018-11-23 10:21:01,241 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 65 [2018-11-23 10:21:01,241 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:21:01,241 INFO L402 BasicCegarLoop]: trace histogram [6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:21:01,241 INFO L423 AbstractCegarLoop]: === Iteration 9 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:21:01,241 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:21:01,242 INFO L82 PathProgramCache]: Analyzing trace with hash -1793291852, now seen corresponding path program 1 times [2018-11-23 10:21:01,242 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:21:01,242 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 10 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 10 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:21:01,260 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 10:21:02,515 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:21:03,042 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:21:03,044 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:21:03,332 INFO L256 TraceCheckUtils]: 0: Hoare triple {3881#true} call ULTIMATE.init(); {3881#true} is VALID [2018-11-23 10:21:03,333 INFO L273 TraceCheckUtils]: 1: Hoare triple {3881#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {3881#true} is VALID [2018-11-23 10:21:03,333 INFO L273 TraceCheckUtils]: 2: Hoare triple {3881#true} assume true; {3881#true} is VALID [2018-11-23 10:21:03,333 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {3881#true} {3881#true} #85#return; {3881#true} is VALID [2018-11-23 10:21:03,333 INFO L256 TraceCheckUtils]: 4: Hoare triple {3881#true} call #t~ret13 := main(); {3881#true} is VALID [2018-11-23 10:21:03,334 INFO L273 TraceCheckUtils]: 5: Hoare triple {3881#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {3881#true} is VALID [2018-11-23 10:21:03,336 INFO L273 TraceCheckUtils]: 6: Hoare triple {3881#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {3904#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:21:03,336 INFO L256 TraceCheckUtils]: 7: Hoare triple {3904#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {3904#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:21:03,337 INFO L273 TraceCheckUtils]: 8: Hoare triple {3904#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {3911#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:03,337 INFO L273 TraceCheckUtils]: 9: Hoare triple {3911#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {3911#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:03,338 INFO L273 TraceCheckUtils]: 10: Hoare triple {3911#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {3918#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:03,338 INFO L273 TraceCheckUtils]: 11: Hoare triple {3918#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {3918#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:03,339 INFO L273 TraceCheckUtils]: 12: Hoare triple {3918#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {3925#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:03,340 INFO L273 TraceCheckUtils]: 13: Hoare triple {3925#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {3929#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvslt init_nondet_~i~0 ~N~0))} is VALID [2018-11-23 10:21:03,341 INFO L273 TraceCheckUtils]: 14: Hoare triple {3929#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvslt init_nondet_~i~0 ~N~0))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {3933#(and (bvslt (bvadd init_nondet_~i~0 (_ bv4294967295 32)) ~N~0) (= (bvadd init_nondet_~i~0 (_ bv4294967293 32)) (_ bv0 32)))} is VALID [2018-11-23 10:21:03,342 INFO L273 TraceCheckUtils]: 15: Hoare triple {3933#(and (bvslt (bvadd init_nondet_~i~0 (_ bv4294967295 32)) ~N~0) (= (bvadd init_nondet_~i~0 (_ bv4294967293 32)) (_ bv0 32)))} assume !~bvslt32(~i~0, ~N~0); {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,343 INFO L273 TraceCheckUtils]: 16: Hoare triple {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume true; {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,344 INFO L268 TraceCheckUtils]: 17: Hoare quadruple {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} {3904#(bvsgt ~N~0 (_ bv1 32))} #89#return; {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,345 INFO L273 TraceCheckUtils]: 18: Hoare triple {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,346 INFO L256 TraceCheckUtils]: 19: Hoare triple {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,347 INFO L273 TraceCheckUtils]: 20: Hoare triple {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3953#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv0 32) rangesum_~i~1))} is VALID [2018-11-23 10:21:03,348 INFO L273 TraceCheckUtils]: 21: Hoare triple {3953#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv0 32) rangesum_~i~1))} assume !!~bvslt32(~i~1, ~N~0); {3953#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv0 32) rangesum_~i~1))} is VALID [2018-11-23 10:21:03,349 INFO L273 TraceCheckUtils]: 22: Hoare triple {3953#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv0 32) rangesum_~i~1))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3953#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv0 32) rangesum_~i~1))} is VALID [2018-11-23 10:21:03,350 INFO L273 TraceCheckUtils]: 23: Hoare triple {3953#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv0 32) rangesum_~i~1))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3963#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) rangesum_~i~1))} is VALID [2018-11-23 10:21:03,350 INFO L273 TraceCheckUtils]: 24: Hoare triple {3963#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) rangesum_~i~1))} assume !!~bvslt32(~i~1, ~N~0); {3963#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) rangesum_~i~1))} is VALID [2018-11-23 10:21:03,352 INFO L273 TraceCheckUtils]: 25: Hoare triple {3963#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) rangesum_~i~1))} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {3963#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) rangesum_~i~1))} is VALID [2018-11-23 10:21:03,353 INFO L273 TraceCheckUtils]: 26: Hoare triple {3963#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) rangesum_~i~1))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3973#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv2 32) rangesum_~i~1))} is VALID [2018-11-23 10:21:03,354 INFO L273 TraceCheckUtils]: 27: Hoare triple {3973#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv2 32) rangesum_~i~1))} assume !~bvslt32(~i~1, ~N~0); {3882#false} is VALID [2018-11-23 10:21:03,354 INFO L273 TraceCheckUtils]: 28: Hoare triple {3882#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {3882#false} is VALID [2018-11-23 10:21:03,355 INFO L273 TraceCheckUtils]: 29: Hoare triple {3882#false} assume true; {3882#false} is VALID [2018-11-23 10:21:03,355 INFO L268 TraceCheckUtils]: 30: Hoare quadruple {3882#false} {3937#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #91#return; {3882#false} is VALID [2018-11-23 10:21:03,355 INFO L273 TraceCheckUtils]: 31: Hoare triple {3882#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {3882#false} is VALID [2018-11-23 10:21:03,355 INFO L256 TraceCheckUtils]: 32: Hoare triple {3882#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {3882#false} is VALID [2018-11-23 10:21:03,356 INFO L273 TraceCheckUtils]: 33: Hoare triple {3882#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3882#false} is VALID [2018-11-23 10:21:03,356 INFO L273 TraceCheckUtils]: 34: Hoare triple {3882#false} assume !!~bvslt32(~i~1, ~N~0); {3882#false} is VALID [2018-11-23 10:21:03,356 INFO L273 TraceCheckUtils]: 35: Hoare triple {3882#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3882#false} is VALID [2018-11-23 10:21:03,356 INFO L273 TraceCheckUtils]: 36: Hoare triple {3882#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3882#false} is VALID [2018-11-23 10:21:03,356 INFO L273 TraceCheckUtils]: 37: Hoare triple {3882#false} assume !!~bvslt32(~i~1, ~N~0); {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L273 TraceCheckUtils]: 38: Hoare triple {3882#false} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L273 TraceCheckUtils]: 39: Hoare triple {3882#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L273 TraceCheckUtils]: 40: Hoare triple {3882#false} assume !~bvslt32(~i~1, ~N~0); {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L273 TraceCheckUtils]: 41: Hoare triple {3882#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L273 TraceCheckUtils]: 42: Hoare triple {3882#false} assume true; {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L268 TraceCheckUtils]: 43: Hoare quadruple {3882#false} {3882#false} #93#return; {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L273 TraceCheckUtils]: 44: Hoare triple {3882#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {3882#false} is VALID [2018-11-23 10:21:03,357 INFO L273 TraceCheckUtils]: 45: Hoare triple {3882#false} assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; {3882#false} is VALID [2018-11-23 10:21:03,358 INFO L273 TraceCheckUtils]: 46: Hoare triple {3882#false} #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; {3882#false} is VALID [2018-11-23 10:21:03,358 INFO L273 TraceCheckUtils]: 47: Hoare triple {3882#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {3882#false} is VALID [2018-11-23 10:21:03,358 INFO L273 TraceCheckUtils]: 48: Hoare triple {3882#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {3882#false} is VALID [2018-11-23 10:21:03,358 INFO L256 TraceCheckUtils]: 49: Hoare triple {3882#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {3882#false} is VALID [2018-11-23 10:21:03,358 INFO L273 TraceCheckUtils]: 50: Hoare triple {3882#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3882#false} is VALID [2018-11-23 10:21:03,358 INFO L273 TraceCheckUtils]: 51: Hoare triple {3882#false} assume !!~bvslt32(~i~1, ~N~0); {3882#false} is VALID [2018-11-23 10:21:03,358 INFO L273 TraceCheckUtils]: 52: Hoare triple {3882#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L273 TraceCheckUtils]: 53: Hoare triple {3882#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L273 TraceCheckUtils]: 54: Hoare triple {3882#false} assume !!~bvslt32(~i~1, ~N~0); {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L273 TraceCheckUtils]: 55: Hoare triple {3882#false} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L273 TraceCheckUtils]: 56: Hoare triple {3882#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L273 TraceCheckUtils]: 57: Hoare triple {3882#false} assume !~bvslt32(~i~1, ~N~0); {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L273 TraceCheckUtils]: 58: Hoare triple {3882#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L273 TraceCheckUtils]: 59: Hoare triple {3882#false} assume true; {3882#false} is VALID [2018-11-23 10:21:03,359 INFO L268 TraceCheckUtils]: 60: Hoare quadruple {3882#false} {3882#false} #95#return; {3882#false} is VALID [2018-11-23 10:21:03,360 INFO L273 TraceCheckUtils]: 61: Hoare triple {3882#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {3882#false} is VALID [2018-11-23 10:21:03,360 INFO L273 TraceCheckUtils]: 62: Hoare triple {3882#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {3882#false} is VALID [2018-11-23 10:21:03,360 INFO L273 TraceCheckUtils]: 63: Hoare triple {3882#false} assume !false; {3882#false} is VALID [2018-11-23 10:21:03,363 INFO L134 CoverageAnalysis]: Checked inductivity of 88 backedges. 36 proven. 14 refuted. 0 times theorem prover too weak. 38 trivial. 0 not checked. [2018-11-23 10:21:03,364 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 10:21:03,947 INFO L273 TraceCheckUtils]: 63: Hoare triple {3882#false} assume !false; {3882#false} is VALID [2018-11-23 10:21:03,947 INFO L273 TraceCheckUtils]: 62: Hoare triple {3882#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {3882#false} is VALID [2018-11-23 10:21:03,948 INFO L273 TraceCheckUtils]: 61: Hoare triple {3882#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {3882#false} is VALID [2018-11-23 10:21:03,948 INFO L268 TraceCheckUtils]: 60: Hoare quadruple {3881#true} {3882#false} #95#return; {3882#false} is VALID [2018-11-23 10:21:03,948 INFO L273 TraceCheckUtils]: 59: Hoare triple {3881#true} assume true; {3881#true} is VALID [2018-11-23 10:21:03,948 INFO L273 TraceCheckUtils]: 58: Hoare triple {3881#true} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {3881#true} is VALID [2018-11-23 10:21:03,949 INFO L273 TraceCheckUtils]: 57: Hoare triple {3881#true} assume !~bvslt32(~i~1, ~N~0); {3881#true} is VALID [2018-11-23 10:21:03,949 INFO L273 TraceCheckUtils]: 56: Hoare triple {3881#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3881#true} is VALID [2018-11-23 10:21:03,949 INFO L273 TraceCheckUtils]: 55: Hoare triple {3881#true} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {3881#true} is VALID [2018-11-23 10:21:03,949 INFO L273 TraceCheckUtils]: 54: Hoare triple {3881#true} assume !!~bvslt32(~i~1, ~N~0); {3881#true} is VALID [2018-11-23 10:21:03,950 INFO L273 TraceCheckUtils]: 53: Hoare triple {3881#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3881#true} is VALID [2018-11-23 10:21:03,950 INFO L273 TraceCheckUtils]: 52: Hoare triple {3881#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3881#true} is VALID [2018-11-23 10:21:03,950 INFO L273 TraceCheckUtils]: 51: Hoare triple {3881#true} assume !!~bvslt32(~i~1, ~N~0); {3881#true} is VALID [2018-11-23 10:21:03,950 INFO L273 TraceCheckUtils]: 50: Hoare triple {3881#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3881#true} is VALID [2018-11-23 10:21:03,950 INFO L256 TraceCheckUtils]: 49: Hoare triple {3882#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {3881#true} is VALID [2018-11-23 10:21:03,950 INFO L273 TraceCheckUtils]: 48: Hoare triple {3882#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {3882#false} is VALID [2018-11-23 10:21:03,951 INFO L273 TraceCheckUtils]: 47: Hoare triple {3882#false} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {3882#false} is VALID [2018-11-23 10:21:03,951 INFO L273 TraceCheckUtils]: 46: Hoare triple {3882#false} #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; {3882#false} is VALID [2018-11-23 10:21:03,951 INFO L273 TraceCheckUtils]: 45: Hoare triple {3882#false} assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; {3882#false} is VALID [2018-11-23 10:21:03,951 INFO L273 TraceCheckUtils]: 44: Hoare triple {3882#false} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {3882#false} is VALID [2018-11-23 10:21:03,951 INFO L268 TraceCheckUtils]: 43: Hoare quadruple {3881#true} {3882#false} #93#return; {3882#false} is VALID [2018-11-23 10:21:03,951 INFO L273 TraceCheckUtils]: 42: Hoare triple {3881#true} assume true; {3881#true} is VALID [2018-11-23 10:21:03,952 INFO L273 TraceCheckUtils]: 41: Hoare triple {3881#true} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {3881#true} is VALID [2018-11-23 10:21:03,952 INFO L273 TraceCheckUtils]: 40: Hoare triple {3881#true} assume !~bvslt32(~i~1, ~N~0); {3881#true} is VALID [2018-11-23 10:21:03,952 INFO L273 TraceCheckUtils]: 39: Hoare triple {3881#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3881#true} is VALID [2018-11-23 10:21:03,952 INFO L273 TraceCheckUtils]: 38: Hoare triple {3881#true} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {3881#true} is VALID [2018-11-23 10:21:03,952 INFO L273 TraceCheckUtils]: 37: Hoare triple {3881#true} assume !!~bvslt32(~i~1, ~N~0); {3881#true} is VALID [2018-11-23 10:21:03,952 INFO L273 TraceCheckUtils]: 36: Hoare triple {3881#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {3881#true} is VALID [2018-11-23 10:21:03,952 INFO L273 TraceCheckUtils]: 35: Hoare triple {3881#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {3881#true} is VALID [2018-11-23 10:21:03,953 INFO L273 TraceCheckUtils]: 34: Hoare triple {3881#true} assume !!~bvslt32(~i~1, ~N~0); {3881#true} is VALID [2018-11-23 10:21:03,953 INFO L273 TraceCheckUtils]: 33: Hoare triple {3881#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {3881#true} is VALID [2018-11-23 10:21:03,953 INFO L256 TraceCheckUtils]: 32: Hoare triple {3882#false} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {3881#true} is VALID [2018-11-23 10:21:03,953 INFO L273 TraceCheckUtils]: 31: Hoare triple {3882#false} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {3882#false} is VALID [2018-11-23 10:21:03,955 INFO L268 TraceCheckUtils]: 30: Hoare quadruple {4188#(not (bvslt (_ bv2 32) ~N~0))} {4184#(bvslt (_ bv2 32) ~N~0)} #91#return; {3882#false} is VALID [2018-11-23 10:21:03,955 INFO L273 TraceCheckUtils]: 29: Hoare triple {4188#(not (bvslt (_ bv2 32) ~N~0))} assume true; {4188#(not (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,956 INFO L273 TraceCheckUtils]: 28: Hoare triple {4188#(not (bvslt (_ bv2 32) ~N~0))} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {4188#(not (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,956 INFO L273 TraceCheckUtils]: 27: Hoare triple {4198#(or (bvslt rangesum_~i~1 ~N~0) (not (bvslt (_ bv2 32) ~N~0)))} assume !~bvslt32(~i~1, ~N~0); {4188#(not (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:03,971 INFO L273 TraceCheckUtils]: 26: Hoare triple {4202#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4198#(or (bvslt rangesum_~i~1 ~N~0) (not (bvslt (_ bv2 32) ~N~0)))} is VALID [2018-11-23 10:21:03,972 INFO L273 TraceCheckUtils]: 25: Hoare triple {4202#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0))} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {4202#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0))} is VALID [2018-11-23 10:21:03,973 INFO L273 TraceCheckUtils]: 24: Hoare triple {4202#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4202#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0))} is VALID [2018-11-23 10:21:04,008 INFO L273 TraceCheckUtils]: 23: Hoare triple {4212#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv2 32)) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4202#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv1 32)) ~N~0))} is VALID [2018-11-23 10:21:04,009 INFO L273 TraceCheckUtils]: 22: Hoare triple {4212#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv2 32)) ~N~0))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4212#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv2 32)) ~N~0))} is VALID [2018-11-23 10:21:04,010 INFO L273 TraceCheckUtils]: 21: Hoare triple {4212#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv2 32)) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4212#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv2 32)) ~N~0))} is VALID [2018-11-23 10:21:04,010 INFO L273 TraceCheckUtils]: 20: Hoare triple {3881#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {4212#(or (not (bvslt (_ bv2 32) ~N~0)) (bvslt (bvadd rangesum_~i~1 (_ bv2 32)) ~N~0))} is VALID [2018-11-23 10:21:04,010 INFO L256 TraceCheckUtils]: 19: Hoare triple {4184#(bvslt (_ bv2 32) ~N~0)} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {3881#true} is VALID [2018-11-23 10:21:04,011 INFO L273 TraceCheckUtils]: 18: Hoare triple {4184#(bvslt (_ bv2 32) ~N~0)} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {4184#(bvslt (_ bv2 32) ~N~0)} is VALID [2018-11-23 10:21:04,012 INFO L268 TraceCheckUtils]: 17: Hoare quadruple {4184#(bvslt (_ bv2 32) ~N~0)} {3881#true} #89#return; {4184#(bvslt (_ bv2 32) ~N~0)} is VALID [2018-11-23 10:21:04,012 INFO L273 TraceCheckUtils]: 16: Hoare triple {4184#(bvslt (_ bv2 32) ~N~0)} assume true; {4184#(bvslt (_ bv2 32) ~N~0)} is VALID [2018-11-23 10:21:04,012 INFO L273 TraceCheckUtils]: 15: Hoare triple {4237#(or (bvslt (_ bv2 32) ~N~0) (bvslt init_nondet_~i~0 ~N~0))} assume !~bvslt32(~i~0, ~N~0); {4184#(bvslt (_ bv2 32) ~N~0)} is VALID [2018-11-23 10:21:04,014 INFO L273 TraceCheckUtils]: 14: Hoare triple {4241#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (bvslt (_ bv2 32) ~N~0))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {4237#(or (bvslt (_ bv2 32) ~N~0) (bvslt init_nondet_~i~0 ~N~0))} is VALID [2018-11-23 10:21:04,015 INFO L273 TraceCheckUtils]: 13: Hoare triple {4245#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (bvslt (_ bv2 32) ~N~0) (not (bvslt init_nondet_~i~0 ~N~0)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {4241#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:04,046 INFO L273 TraceCheckUtils]: 12: Hoare triple {4249#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (bvslt (_ bv2 32) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {4245#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (bvslt (_ bv2 32) ~N~0) (not (bvslt init_nondet_~i~0 ~N~0)))} is VALID [2018-11-23 10:21:04,047 INFO L273 TraceCheckUtils]: 11: Hoare triple {4249#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (bvslt (_ bv2 32) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {4249#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (bvslt (_ bv2 32) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)))} is VALID [2018-11-23 10:21:04,111 INFO L273 TraceCheckUtils]: 10: Hoare triple {4256#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {4249#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (bvslt (_ bv2 32) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)))} is VALID [2018-11-23 10:21:04,112 INFO L273 TraceCheckUtils]: 9: Hoare triple {4256#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {4256#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:04,113 INFO L273 TraceCheckUtils]: 8: Hoare triple {3881#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {4256#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:04,113 INFO L256 TraceCheckUtils]: 7: Hoare triple {3881#true} call init_nondet(~#x~0.base, ~#x~0.offset); {3881#true} is VALID [2018-11-23 10:21:04,113 INFO L273 TraceCheckUtils]: 6: Hoare triple {3881#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {3881#true} is VALID [2018-11-23 10:21:04,113 INFO L273 TraceCheckUtils]: 5: Hoare triple {3881#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {3881#true} is VALID [2018-11-23 10:21:04,114 INFO L256 TraceCheckUtils]: 4: Hoare triple {3881#true} call #t~ret13 := main(); {3881#true} is VALID [2018-11-23 10:21:04,114 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {3881#true} {3881#true} #85#return; {3881#true} is VALID [2018-11-23 10:21:04,114 INFO L273 TraceCheckUtils]: 2: Hoare triple {3881#true} assume true; {3881#true} is VALID [2018-11-23 10:21:04,114 INFO L273 TraceCheckUtils]: 1: Hoare triple {3881#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {3881#true} is VALID [2018-11-23 10:21:04,114 INFO L256 TraceCheckUtils]: 0: Hoare triple {3881#true} call ULTIMATE.init(); {3881#true} is VALID [2018-11-23 10:21:04,121 INFO L134 CoverageAnalysis]: Checked inductivity of 88 backedges. 0 proven. 54 refuted. 0 times theorem prover too weak. 34 trivial. 0 not checked. [2018-11-23 10:21:04,128 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 10:21:04,128 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [12, 12] total 22 [2018-11-23 10:21:04,128 INFO L78 Accepts]: Start accepts. Automaton has 22 states. Word has length 64 [2018-11-23 10:21:04,129 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:21:04,129 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 22 states. [2018-11-23 10:21:04,765 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 87 edges. 87 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:21:04,766 INFO L459 AbstractCegarLoop]: Interpolant automaton has 22 states [2018-11-23 10:21:04,766 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 22 interpolants. [2018-11-23 10:21:04,767 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=116, Invalid=346, Unknown=0, NotChecked=0, Total=462 [2018-11-23 10:21:04,767 INFO L87 Difference]: Start difference. First operand 57 states and 71 transitions. Second operand 22 states. [2018-11-23 10:21:06,521 WARN L180 SmtUtils]: Spent 104.00 ms on a formula simplification. DAG size of input: 15 DAG size of output: 11 [2018-11-23 10:21:10,743 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:10,743 INFO L93 Difference]: Finished difference Result 142 states and 203 transitions. [2018-11-23 10:21:10,743 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 20 states. [2018-11-23 10:21:10,743 INFO L78 Accepts]: Start accepts. Automaton has 22 states. Word has length 64 [2018-11-23 10:21:10,743 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:21:10,744 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 22 states. [2018-11-23 10:21:10,747 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 20 states to 20 states and 126 transitions. [2018-11-23 10:21:10,747 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 22 states. [2018-11-23 10:21:10,750 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 20 states to 20 states and 126 transitions. [2018-11-23 10:21:10,751 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 20 states and 126 transitions. [2018-11-23 10:21:11,624 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 126 edges. 126 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:21:11,627 INFO L225 Difference]: With dead ends: 142 [2018-11-23 10:21:11,627 INFO L226 Difference]: Without dead ends: 105 [2018-11-23 10:21:11,629 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 133 GetRequests, 106 SyntacticMatches, 1 SemanticMatches, 26 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 176 ImplicationChecksByTransitivity, 0.9s TimeCoverageRelationStatistics Valid=201, Invalid=555, Unknown=0, NotChecked=0, Total=756 [2018-11-23 10:21:11,629 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 105 states. [2018-11-23 10:21:11,837 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 105 to 97. [2018-11-23 10:21:11,838 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:21:11,838 INFO L82 GeneralOperation]: Start isEquivalent. First operand 105 states. Second operand 97 states. [2018-11-23 10:21:11,838 INFO L74 IsIncluded]: Start isIncluded. First operand 105 states. Second operand 97 states. [2018-11-23 10:21:11,838 INFO L87 Difference]: Start difference. First operand 105 states. Second operand 97 states. [2018-11-23 10:21:11,843 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:11,844 INFO L93 Difference]: Finished difference Result 105 states and 131 transitions. [2018-11-23 10:21:11,844 INFO L276 IsEmpty]: Start isEmpty. Operand 105 states and 131 transitions. [2018-11-23 10:21:11,845 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:21:11,845 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:21:11,845 INFO L74 IsIncluded]: Start isIncluded. First operand 97 states. Second operand 105 states. [2018-11-23 10:21:11,845 INFO L87 Difference]: Start difference. First operand 97 states. Second operand 105 states. [2018-11-23 10:21:11,850 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:11,850 INFO L93 Difference]: Finished difference Result 105 states and 131 transitions. [2018-11-23 10:21:11,850 INFO L276 IsEmpty]: Start isEmpty. Operand 105 states and 131 transitions. [2018-11-23 10:21:11,851 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:21:11,851 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:21:11,851 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:21:11,852 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:21:11,852 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 97 states. [2018-11-23 10:21:11,857 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 97 states to 97 states and 123 transitions. [2018-11-23 10:21:11,857 INFO L78 Accepts]: Start accepts. Automaton has 97 states and 123 transitions. Word has length 64 [2018-11-23 10:21:11,857 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:21:11,857 INFO L480 AbstractCegarLoop]: Abstraction has 97 states and 123 transitions. [2018-11-23 10:21:11,858 INFO L481 AbstractCegarLoop]: Interpolant automaton has 22 states. [2018-11-23 10:21:11,858 INFO L276 IsEmpty]: Start isEmpty. Operand 97 states and 123 transitions. [2018-11-23 10:21:11,859 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 74 [2018-11-23 10:21:11,859 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:21:11,859 INFO L402 BasicCegarLoop]: trace histogram [9, 9, 6, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:21:11,859 INFO L423 AbstractCegarLoop]: === Iteration 10 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:21:11,860 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:21:11,860 INFO L82 PathProgramCache]: Analyzing trace with hash -737365673, now seen corresponding path program 2 times [2018-11-23 10:21:11,860 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:21:11,860 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 11 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 11 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:21:11,879 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST1 [2018-11-23 10:21:13,825 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 10:21:13,825 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 10:21:14,281 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 10:21:14,284 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 10:21:14,746 INFO L256 TraceCheckUtils]: 0: Hoare triple {4841#true} call ULTIMATE.init(); {4841#true} is VALID [2018-11-23 10:21:14,747 INFO L273 TraceCheckUtils]: 1: Hoare triple {4841#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {4841#true} is VALID [2018-11-23 10:21:14,747 INFO L273 TraceCheckUtils]: 2: Hoare triple {4841#true} assume true; {4841#true} is VALID [2018-11-23 10:21:14,747 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {4841#true} {4841#true} #85#return; {4841#true} is VALID [2018-11-23 10:21:14,747 INFO L256 TraceCheckUtils]: 4: Hoare triple {4841#true} call #t~ret13 := main(); {4841#true} is VALID [2018-11-23 10:21:14,747 INFO L273 TraceCheckUtils]: 5: Hoare triple {4841#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {4841#true} is VALID [2018-11-23 10:21:14,747 INFO L273 TraceCheckUtils]: 6: Hoare triple {4841#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {4864#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:21:14,765 INFO L256 TraceCheckUtils]: 7: Hoare triple {4864#(bvsgt ~N~0 (_ bv1 32))} call init_nondet(~#x~0.base, ~#x~0.offset); {4864#(bvsgt ~N~0 (_ bv1 32))} is VALID [2018-11-23 10:21:14,771 INFO L273 TraceCheckUtils]: 8: Hoare triple {4864#(bvsgt ~N~0 (_ bv1 32))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {4871#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:14,772 INFO L273 TraceCheckUtils]: 9: Hoare triple {4871#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {4871#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:14,772 INFO L273 TraceCheckUtils]: 10: Hoare triple {4871#(and (= init_nondet_~i~0 (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {4878#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:14,773 INFO L273 TraceCheckUtils]: 11: Hoare triple {4878#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {4878#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:14,774 INFO L273 TraceCheckUtils]: 12: Hoare triple {4878#(and (= (bvadd init_nondet_~i~0 (_ bv4294967295 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {4885#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} is VALID [2018-11-23 10:21:14,774 INFO L273 TraceCheckUtils]: 13: Hoare triple {4885#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvsgt ~N~0 (_ bv1 32)))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {4889#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvslt init_nondet_~i~0 ~N~0))} is VALID [2018-11-23 10:21:14,775 INFO L273 TraceCheckUtils]: 14: Hoare triple {4889#(and (= (bvadd init_nondet_~i~0 (_ bv4294967294 32)) (_ bv0 32)) (bvslt init_nondet_~i~0 ~N~0))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {4893#(and (bvslt (bvadd init_nondet_~i~0 (_ bv4294967295 32)) ~N~0) (= (bvadd init_nondet_~i~0 (_ bv4294967293 32)) (_ bv0 32)))} is VALID [2018-11-23 10:21:14,776 INFO L273 TraceCheckUtils]: 15: Hoare triple {4893#(and (bvslt (bvadd init_nondet_~i~0 (_ bv4294967295 32)) ~N~0) (= (bvadd init_nondet_~i~0 (_ bv4294967293 32)) (_ bv0 32)))} assume !~bvslt32(~i~0, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,776 INFO L273 TraceCheckUtils]: 16: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume true; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,777 INFO L268 TraceCheckUtils]: 17: Hoare quadruple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} {4864#(bvsgt ~N~0 (_ bv1 32))} #89#return; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,778 INFO L273 TraceCheckUtils]: 18: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,779 INFO L256 TraceCheckUtils]: 19: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,780 INFO L273 TraceCheckUtils]: 20: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,781 INFO L273 TraceCheckUtils]: 21: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,781 INFO L273 TraceCheckUtils]: 22: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,782 INFO L273 TraceCheckUtils]: 23: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,783 INFO L273 TraceCheckUtils]: 24: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,783 INFO L273 TraceCheckUtils]: 25: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,784 INFO L273 TraceCheckUtils]: 26: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,785 INFO L273 TraceCheckUtils]: 27: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,786 INFO L273 TraceCheckUtils]: 28: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,787 INFO L273 TraceCheckUtils]: 29: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,787 INFO L273 TraceCheckUtils]: 30: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,788 INFO L273 TraceCheckUtils]: 31: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,789 INFO L273 TraceCheckUtils]: 32: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume true; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,790 INFO L268 TraceCheckUtils]: 33: Hoare quadruple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #91#return; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,791 INFO L273 TraceCheckUtils]: 34: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,792 INFO L256 TraceCheckUtils]: 35: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,793 INFO L273 TraceCheckUtils]: 36: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,793 INFO L273 TraceCheckUtils]: 37: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,794 INFO L273 TraceCheckUtils]: 38: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,795 INFO L273 TraceCheckUtils]: 39: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,795 INFO L273 TraceCheckUtils]: 40: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,796 INFO L273 TraceCheckUtils]: 41: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,797 INFO L273 TraceCheckUtils]: 42: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,798 INFO L273 TraceCheckUtils]: 43: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !!~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,799 INFO L273 TraceCheckUtils]: 44: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,799 INFO L273 TraceCheckUtils]: 45: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,800 INFO L273 TraceCheckUtils]: 46: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume !~bvslt32(~i~1, ~N~0); {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,801 INFO L273 TraceCheckUtils]: 47: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,802 INFO L273 TraceCheckUtils]: 48: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} assume true; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,803 INFO L268 TraceCheckUtils]: 49: Hoare quadruple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} #93#return; {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} is VALID [2018-11-23 10:21:14,804 INFO L273 TraceCheckUtils]: 50: Hoare triple {4897#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0))} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {5003#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= main_~i~2 (_ bv0 32)))} is VALID [2018-11-23 10:21:14,804 INFO L273 TraceCheckUtils]: 51: Hoare triple {5003#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= main_~i~2 (_ bv0 32)))} assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; {5003#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= main_~i~2 (_ bv0 32)))} is VALID [2018-11-23 10:21:14,805 INFO L273 TraceCheckUtils]: 52: Hoare triple {5003#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= main_~i~2 (_ bv0 32)))} #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; {5010#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) main_~i~2))} is VALID [2018-11-23 10:21:14,808 INFO L273 TraceCheckUtils]: 53: Hoare triple {5010#(and (not (bvslt (_ bv3 32) ~N~0)) (bvslt (_ bv2 32) ~N~0) (= (_ bv1 32) main_~i~2))} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {4842#false} is VALID [2018-11-23 10:21:14,808 INFO L273 TraceCheckUtils]: 54: Hoare triple {4842#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {4842#false} is VALID [2018-11-23 10:21:14,808 INFO L256 TraceCheckUtils]: 55: Hoare triple {4842#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {4842#false} is VALID [2018-11-23 10:21:14,808 INFO L273 TraceCheckUtils]: 56: Hoare triple {4842#false} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {4842#false} is VALID [2018-11-23 10:21:14,808 INFO L273 TraceCheckUtils]: 57: Hoare triple {4842#false} assume !!~bvslt32(~i~1, ~N~0); {4842#false} is VALID [2018-11-23 10:21:14,809 INFO L273 TraceCheckUtils]: 58: Hoare triple {4842#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4842#false} is VALID [2018-11-23 10:21:14,809 INFO L273 TraceCheckUtils]: 59: Hoare triple {4842#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4842#false} is VALID [2018-11-23 10:21:14,809 INFO L273 TraceCheckUtils]: 60: Hoare triple {4842#false} assume !!~bvslt32(~i~1, ~N~0); {4842#false} is VALID [2018-11-23 10:21:14,809 INFO L273 TraceCheckUtils]: 61: Hoare triple {4842#false} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4842#false} is VALID [2018-11-23 10:21:14,810 INFO L273 TraceCheckUtils]: 62: Hoare triple {4842#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4842#false} is VALID [2018-11-23 10:21:14,810 INFO L273 TraceCheckUtils]: 63: Hoare triple {4842#false} assume !!~bvslt32(~i~1, ~N~0); {4842#false} is VALID [2018-11-23 10:21:14,810 INFO L273 TraceCheckUtils]: 64: Hoare triple {4842#false} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {4842#false} is VALID [2018-11-23 10:21:14,810 INFO L273 TraceCheckUtils]: 65: Hoare triple {4842#false} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4842#false} is VALID [2018-11-23 10:21:14,810 INFO L273 TraceCheckUtils]: 66: Hoare triple {4842#false} assume !~bvslt32(~i~1, ~N~0); {4842#false} is VALID [2018-11-23 10:21:14,810 INFO L273 TraceCheckUtils]: 67: Hoare triple {4842#false} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {4842#false} is VALID [2018-11-23 10:21:14,810 INFO L273 TraceCheckUtils]: 68: Hoare triple {4842#false} assume true; {4842#false} is VALID [2018-11-23 10:21:14,811 INFO L268 TraceCheckUtils]: 69: Hoare quadruple {4842#false} {4842#false} #95#return; {4842#false} is VALID [2018-11-23 10:21:14,811 INFO L273 TraceCheckUtils]: 70: Hoare triple {4842#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {4842#false} is VALID [2018-11-23 10:21:14,811 INFO L273 TraceCheckUtils]: 71: Hoare triple {4842#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {4842#false} is VALID [2018-11-23 10:21:14,811 INFO L273 TraceCheckUtils]: 72: Hoare triple {4842#false} assume !false; {4842#false} is VALID [2018-11-23 10:21:14,822 INFO L134 CoverageAnalysis]: Checked inductivity of 160 backedges. 76 proven. 10 refuted. 0 times theorem prover too weak. 74 trivial. 0 not checked. [2018-11-23 10:21:14,822 INFO L316 TraceCheckSpWp]: Computing backward predicates... [2018-11-23 10:21:15,589 INFO L273 TraceCheckUtils]: 72: Hoare triple {4842#false} assume !false; {4842#false} is VALID [2018-11-23 10:21:15,589 INFO L273 TraceCheckUtils]: 71: Hoare triple {4842#false} assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; {4842#false} is VALID [2018-11-23 10:21:15,589 INFO L273 TraceCheckUtils]: 70: Hoare triple {4842#false} ~ret5~0 := #t~ret12;havoc #t~ret12; {4842#false} is VALID [2018-11-23 10:21:15,590 INFO L268 TraceCheckUtils]: 69: Hoare quadruple {4841#true} {4842#false} #95#return; {4842#false} is VALID [2018-11-23 10:21:15,590 INFO L273 TraceCheckUtils]: 68: Hoare triple {4841#true} assume true; {4841#true} is VALID [2018-11-23 10:21:15,590 INFO L273 TraceCheckUtils]: 67: Hoare triple {4841#true} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {4841#true} is VALID [2018-11-23 10:21:15,590 INFO L273 TraceCheckUtils]: 66: Hoare triple {4841#true} assume !~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,590 INFO L273 TraceCheckUtils]: 65: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,590 INFO L273 TraceCheckUtils]: 64: Hoare triple {4841#true} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {4841#true} is VALID [2018-11-23 10:21:15,590 INFO L273 TraceCheckUtils]: 63: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L273 TraceCheckUtils]: 62: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L273 TraceCheckUtils]: 61: Hoare triple {4841#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L273 TraceCheckUtils]: 60: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L273 TraceCheckUtils]: 59: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L273 TraceCheckUtils]: 58: Hoare triple {4841#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L273 TraceCheckUtils]: 57: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L273 TraceCheckUtils]: 56: Hoare triple {4841#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {4841#true} is VALID [2018-11-23 10:21:15,591 INFO L256 TraceCheckUtils]: 55: Hoare triple {4842#false} call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); {4841#true} is VALID [2018-11-23 10:21:15,592 INFO L273 TraceCheckUtils]: 54: Hoare triple {4842#false} call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); {4842#false} is VALID [2018-11-23 10:21:15,593 INFO L273 TraceCheckUtils]: 53: Hoare triple {5128#(bvslt main_~i~2 (bvadd ~N~0 (_ bv4294967295 32)))} assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); {4842#false} is VALID [2018-11-23 10:21:15,593 INFO L273 TraceCheckUtils]: 52: Hoare triple {5132#(bvslt (bvadd main_~i~2 (_ bv1 32)) (bvadd ~N~0 (_ bv4294967295 32)))} #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; {5128#(bvslt main_~i~2 (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,595 INFO L273 TraceCheckUtils]: 51: Hoare triple {5132#(bvslt (bvadd main_~i~2 (_ bv1 32)) (bvadd ~N~0 (_ bv4294967295 32)))} assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; {5132#(bvslt (bvadd main_~i~2 (_ bv1 32)) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,595 INFO L273 TraceCheckUtils]: 50: Hoare triple {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; {5132#(bvslt (bvadd main_~i~2 (_ bv1 32)) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,596 INFO L268 TraceCheckUtils]: 49: Hoare quadruple {4841#true} {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} #93#return; {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,596 INFO L273 TraceCheckUtils]: 48: Hoare triple {4841#true} assume true; {4841#true} is VALID [2018-11-23 10:21:15,596 INFO L273 TraceCheckUtils]: 47: Hoare triple {4841#true} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {4841#true} is VALID [2018-11-23 10:21:15,596 INFO L273 TraceCheckUtils]: 46: Hoare triple {4841#true} assume !~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 45: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 44: Hoare triple {4841#true} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 43: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 42: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 41: Hoare triple {4841#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 40: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 39: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,597 INFO L273 TraceCheckUtils]: 38: Hoare triple {4841#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4841#true} is VALID [2018-11-23 10:21:15,598 INFO L273 TraceCheckUtils]: 37: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,598 INFO L273 TraceCheckUtils]: 36: Hoare triple {4841#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {4841#true} is VALID [2018-11-23 10:21:15,598 INFO L256 TraceCheckUtils]: 35: Hoare triple {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); {4841#true} is VALID [2018-11-23 10:21:15,599 INFO L273 TraceCheckUtils]: 34: Hoare triple {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,602 INFO L268 TraceCheckUtils]: 33: Hoare quadruple {4841#true} {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} #91#return; {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,602 INFO L273 TraceCheckUtils]: 32: Hoare triple {4841#true} assume true; {4841#true} is VALID [2018-11-23 10:21:15,602 INFO L273 TraceCheckUtils]: 31: Hoare triple {4841#true} assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; {4841#true} is VALID [2018-11-23 10:21:15,602 INFO L273 TraceCheckUtils]: 30: Hoare triple {4841#true} assume !~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,602 INFO L273 TraceCheckUtils]: 29: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,602 INFO L273 TraceCheckUtils]: 28: Hoare triple {4841#true} assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); {4841#true} is VALID [2018-11-23 10:21:15,603 INFO L273 TraceCheckUtils]: 27: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,603 INFO L273 TraceCheckUtils]: 26: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,603 INFO L273 TraceCheckUtils]: 25: Hoare triple {4841#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4841#true} is VALID [2018-11-23 10:21:15,603 INFO L273 TraceCheckUtils]: 24: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,603 INFO L273 TraceCheckUtils]: 23: Hoare triple {4841#true} #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; {4841#true} is VALID [2018-11-23 10:21:15,603 INFO L273 TraceCheckUtils]: 22: Hoare triple {4841#true} assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); {4841#true} is VALID [2018-11-23 10:21:15,603 INFO L273 TraceCheckUtils]: 21: Hoare triple {4841#true} assume !!~bvslt32(~i~1, ~N~0); {4841#true} is VALID [2018-11-23 10:21:15,604 INFO L273 TraceCheckUtils]: 20: Hoare triple {4841#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; {4841#true} is VALID [2018-11-23 10:21:15,604 INFO L256 TraceCheckUtils]: 19: Hoare triple {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); {4841#true} is VALID [2018-11-23 10:21:15,617 INFO L273 TraceCheckUtils]: 18: Hoare triple {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,630 INFO L268 TraceCheckUtils]: 17: Hoare quadruple {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} {4841#true} #89#return; {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,643 INFO L273 TraceCheckUtils]: 16: Hoare triple {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} assume true; {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,656 INFO L273 TraceCheckUtils]: 15: Hoare triple {5248#(or (bvslt init_nondet_~i~0 ~N~0) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} assume !~bvslt32(~i~0, ~N~0); {5139#(bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32)))} is VALID [2018-11-23 10:21:15,673 INFO L273 TraceCheckUtils]: 14: Hoare triple {5252#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {5248#(or (bvslt init_nondet_~i~0 ~N~0) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} is VALID [2018-11-23 10:21:15,682 INFO L273 TraceCheckUtils]: 13: Hoare triple {5256#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (not (bvslt init_nondet_~i~0 ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {5252#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} is VALID [2018-11-23 10:21:15,727 INFO L273 TraceCheckUtils]: 12: Hoare triple {5260#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {5256#(or (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0) (not (bvslt init_nondet_~i~0 ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} is VALID [2018-11-23 10:21:15,728 INFO L273 TraceCheckUtils]: 11: Hoare triple {5260#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {5260#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} is VALID [2018-11-23 10:21:15,800 INFO L273 TraceCheckUtils]: 10: Hoare triple {5267#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; {5260#(or (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv1 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} is VALID [2018-11-23 10:21:15,801 INFO L273 TraceCheckUtils]: 9: Hoare triple {5267#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; {5267#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} is VALID [2018-11-23 10:21:15,803 INFO L273 TraceCheckUtils]: 8: Hoare triple {4841#true} ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; {5267#(or (bvslt (bvadd init_nondet_~i~0 (_ bv3 32)) ~N~0) (not (bvslt (bvadd init_nondet_~i~0 (_ bv2 32)) ~N~0)) (bvslt (_ bv1 32) (bvadd ~N~0 (_ bv4294967295 32))))} is VALID [2018-11-23 10:21:15,804 INFO L256 TraceCheckUtils]: 7: Hoare triple {4841#true} call init_nondet(~#x~0.base, ~#x~0.offset); {4841#true} is VALID [2018-11-23 10:21:15,804 INFO L273 TraceCheckUtils]: 6: Hoare triple {4841#true} assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); {4841#true} is VALID [2018-11-23 10:21:15,804 INFO L273 TraceCheckUtils]: 5: Hoare triple {4841#true} ~N~0 := #t~nondet4;havoc #t~nondet4; {4841#true} is VALID [2018-11-23 10:21:15,804 INFO L256 TraceCheckUtils]: 4: Hoare triple {4841#true} call #t~ret13 := main(); {4841#true} is VALID [2018-11-23 10:21:15,805 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {4841#true} {4841#true} #85#return; {4841#true} is VALID [2018-11-23 10:21:15,805 INFO L273 TraceCheckUtils]: 2: Hoare triple {4841#true} assume true; {4841#true} is VALID [2018-11-23 10:21:15,805 INFO L273 TraceCheckUtils]: 1: Hoare triple {4841#true} #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; {4841#true} is VALID [2018-11-23 10:21:15,805 INFO L256 TraceCheckUtils]: 0: Hoare triple {4841#true} call ULTIMATE.init(); {4841#true} is VALID [2018-11-23 10:21:15,809 INFO L134 CoverageAnalysis]: Checked inductivity of 160 backedges. 0 proven. 10 refuted. 0 times theorem prover too weak. 150 trivial. 0 not checked. [2018-11-23 10:21:15,819 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 10:21:15,820 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [11, 10] total 19 [2018-11-23 10:21:15,820 INFO L78 Accepts]: Start accepts. Automaton has 19 states. Word has length 73 [2018-11-23 10:21:15,821 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 10:21:15,821 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 19 states. [2018-11-23 10:21:16,403 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 82 edges. 82 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:21:16,404 INFO L459 AbstractCegarLoop]: Interpolant automaton has 19 states [2018-11-23 10:21:16,404 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 19 interpolants. [2018-11-23 10:21:16,404 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=95, Invalid=247, Unknown=0, NotChecked=0, Total=342 [2018-11-23 10:21:16,405 INFO L87 Difference]: Start difference. First operand 97 states and 123 transitions. Second operand 19 states. [2018-11-23 10:21:21,707 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:21,707 INFO L93 Difference]: Finished difference Result 159 states and 196 transitions. [2018-11-23 10:21:21,708 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 16 states. [2018-11-23 10:21:21,708 INFO L78 Accepts]: Start accepts. Automaton has 19 states. Word has length 73 [2018-11-23 10:21:21,710 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 10:21:21,710 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 19 states. [2018-11-23 10:21:21,712 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 16 states to 16 states and 99 transitions. [2018-11-23 10:21:21,712 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 19 states. [2018-11-23 10:21:21,714 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 16 states to 16 states and 99 transitions. [2018-11-23 10:21:21,714 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 16 states and 99 transitions. [2018-11-23 10:21:22,320 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 99 edges. 99 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 10:21:22,323 INFO L225 Difference]: With dead ends: 159 [2018-11-23 10:21:22,323 INFO L226 Difference]: Without dead ends: 112 [2018-11-23 10:21:22,324 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 151 GetRequests, 126 SyntacticMatches, 3 SemanticMatches, 22 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 112 ImplicationChecksByTransitivity, 0.8s TimeCoverageRelationStatistics Valid=163, Invalid=389, Unknown=0, NotChecked=0, Total=552 [2018-11-23 10:21:22,324 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 112 states. [2018-11-23 10:21:22,564 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 112 to 105. [2018-11-23 10:21:22,564 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 10:21:22,564 INFO L82 GeneralOperation]: Start isEquivalent. First operand 112 states. Second operand 105 states. [2018-11-23 10:21:22,564 INFO L74 IsIncluded]: Start isIncluded. First operand 112 states. Second operand 105 states. [2018-11-23 10:21:22,564 INFO L87 Difference]: Start difference. First operand 112 states. Second operand 105 states. [2018-11-23 10:21:22,569 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:22,570 INFO L93 Difference]: Finished difference Result 112 states and 137 transitions. [2018-11-23 10:21:22,570 INFO L276 IsEmpty]: Start isEmpty. Operand 112 states and 137 transitions. [2018-11-23 10:21:22,571 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:21:22,571 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:21:22,571 INFO L74 IsIncluded]: Start isIncluded. First operand 105 states. Second operand 112 states. [2018-11-23 10:21:22,571 INFO L87 Difference]: Start difference. First operand 105 states. Second operand 112 states. [2018-11-23 10:21:22,576 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 10:21:22,576 INFO L93 Difference]: Finished difference Result 112 states and 137 transitions. [2018-11-23 10:21:22,576 INFO L276 IsEmpty]: Start isEmpty. Operand 112 states and 137 transitions. [2018-11-23 10:21:22,577 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 10:21:22,577 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 10:21:22,577 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 10:21:22,577 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 10:21:22,578 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 105 states. [2018-11-23 10:21:22,581 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 105 states to 105 states and 131 transitions. [2018-11-23 10:21:22,581 INFO L78 Accepts]: Start accepts. Automaton has 105 states and 131 transitions. Word has length 73 [2018-11-23 10:21:22,582 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 10:21:22,582 INFO L480 AbstractCegarLoop]: Abstraction has 105 states and 131 transitions. [2018-11-23 10:21:22,582 INFO L481 AbstractCegarLoop]: Interpolant automaton has 19 states. [2018-11-23 10:21:22,582 INFO L276 IsEmpty]: Start isEmpty. Operand 105 states and 131 transitions. [2018-11-23 10:21:22,583 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 76 [2018-11-23 10:21:22,583 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 10:21:22,584 INFO L402 BasicCegarLoop]: trace histogram [9, 9, 6, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 10:21:22,584 INFO L423 AbstractCegarLoop]: === Iteration 11 === [mainErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 10:21:22,584 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 10:21:22,584 INFO L82 PathProgramCache]: Analyzing trace with hash 132738585, now seen corresponding path program 3 times [2018-11-23 10:21:22,585 INFO L223 ckRefinementStrategy]: Switched to mode CVC4_FPBP [2018-11-23 10:21:22,585 INFO L69 tionRefinementEngine]: Using refinement strategy WolfRefinementStrategy No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/cvc4nyu Starting monitored process 12 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 12 with cvc4nyu --tear-down-incremental --print-success --lang smt --rewrite-divk [2018-11-23 10:21:22,614 INFO L101 rtionOrderModulation]: Changing assertion order to OUTSIDE_LOOP_FIRST2 [2018-11-23 10:21:36,193 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST2 issued 8 check-sat command(s) [2018-11-23 10:21:36,193 INFO L250 tOrderPrioritization]: Conjunction of SSA is sat [2018-11-23 10:21:39,194 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 10:21:39,962 INFO L469 BasicCegarLoop]: Counterexample might be feasible ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv0 32), |old(#NULL.offset)|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv0 32), |old(#NULL.offset)|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] assume true; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv0 32), |old(#NULL.offset)|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] RET #85#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] CALL call #t~ret13 := main(); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] ~N~0 := #t~nondet4;havoc #t~nondet4; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call init_nondet(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; VAL [init_nondet_~i~0=(_ bv0 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; VAL [init_nondet_~i~0=(_ bv0 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; VAL [init_nondet_~i~0=(_ bv1 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; VAL [init_nondet_~i~0=(_ bv1 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; VAL [init_nondet_~i~0=(_ bv2 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; VAL [init_nondet_~i~0=(_ bv2 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; VAL [init_nondet_~i~0=(_ bv3 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~0, ~N~0); VAL [init_nondet_~i~0=(_ bv3 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [init_nondet_~i~0=(_ bv3 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] RET #89#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] RET #91#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret5|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); VAL [main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] RET #93#return; VAL [main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret8|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; VAL [main_~i~2=(_ bv0 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; VAL [main_~i~2=(_ bv0 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; VAL [main_~i~2=(_ bv1 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; VAL [main_~i~2=(_ bv1 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv2147483647 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv2147483647 32), ~N~0=(_ bv3 32)] [?] RET #95#return; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret12|=(_ bv2147483647 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~ret5~0 := #t~ret12;havoc #t~ret12; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret5~0=(_ bv2147483647 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret5~0=(_ bv2147483647 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !false; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret5~0=(_ bv2147483647 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L4] ~N~0 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33-L55] assume ~bvsgt32(~N~0, 1bv32); [L34] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !~bvslt32(~i~0, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L5-L10] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L35] RET call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L43] call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32); [L43] havoc #t~mem7; [L43] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52-L54] assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L4] ~N~0 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33-L55] assume ~bvsgt32(~N~0, 1bv32); [L34] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !~bvslt32(~i~0, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L5-L10] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L35] RET call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L43] call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32); [L43] havoc #t~mem7; [L43] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52-L54] assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L4] int N; VAL [\old(N)=0, N=0] [L32] N = __VERIFIER_nondet_int() [L33] COND TRUE N > 1 [L34] int x[N]; VAL [\old(N)=0, N=3, x={1:0}] [L35] CALL init_nondet(x) VAL [\old(N)=0, N=3, x={1:0}] [L6] int i; [L7] i = 0 VAL [\old(N)=0, i=0, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=1, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=2, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=3, N=3, x={1:0}, x={1:0}] [L7] COND FALSE !(i < N) VAL [\old(N)=0, i=3, N=3, x={1:0}, x={1:0}] [L35] RET init_nondet(x) VAL [\old(N)=0, N=3, x={1:0}] [L36] int temp; [L37] int ret; [L38] int ret2; [L39] int ret5; VAL [\old(N)=0, N=3, x={1:0}] [L41] CALL, EXPR rangesum(x) VAL [\old(N)=0, N=3, x={1:0}] [L14] int i; [L15] long long ret; [L16] ret = 0 [L17] int cnt = 0; [L18] i = 0 VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L41] RET, EXPR rangesum(x) VAL [\old(N)=0, N=3, rangesum(x)=0, x={1:0}] [L41] ret = rangesum(x) [L43] EXPR x[0] [L43] temp=x[0] [L43] EXPR x[1] [L43] x[0] = x[1] [L43] x[1] = temp VAL [\old(N)=0, N=3, ret=0, temp=0, x={1:0}] [L44] CALL, EXPR rangesum(x) VAL [\old(N)=0, N=3, x={1:0}] [L14] int i; [L15] long long ret; [L16] ret = 0 [L17] int cnt = 0; [L18] i = 0 VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L44] RET, EXPR rangesum(x) VAL [\old(N)=0, N=3, rangesum(x)=0, ret=0, temp=0, x={1:0}] [L44] ret2 = rangesum(x) [L45] EXPR x[0] [L45] temp=x[0] [L46] int i =0 ; VAL [\old(N)=0, i=0, N=3, ret=0, ret2=0, temp=2147483647, x={1:0}] [L46] COND TRUE i N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=2147483647, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=2147483647, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L50] RET, EXPR rangesum(x) VAL [\old(N)=0, i=2, N=3, rangesum(x)=2147483647, ret=0, ret2=0, temp=2147483647, x={1:0}] [L50] ret5 = rangesum(x) [L52] COND TRUE ret != ret2 || ret !=ret5 VAL [\old(N)=0, i=2, N=3, ret=0, ret2=0, ret5=2147483647, temp=2147483647, x={1:0}] [L53] __VERIFIER_error() VAL [\old(N)=0, i=2, N=3, ret=0, ret2=0, ret5=2147483647, temp=2147483647, x={1:0}] ----- [2018-11-23 10:21:40,155 WARN L170 areAnnotationChecker]: ULTIMATE.initENTRY has no Hoare annotation [2018-11-23 10:21:40,155 WARN L170 areAnnotationChecker]: ULTIMATE.startENTRY has no Hoare annotation [2018-11-23 10:21:40,155 WARN L170 areAnnotationChecker]: ULTIMATE.startENTRY has no Hoare annotation [2018-11-23 10:21:40,155 WARN L170 areAnnotationChecker]: mainENTRY has no Hoare annotation [2018-11-23 10:21:40,155 WARN L170 areAnnotationChecker]: rangesumENTRY has no Hoare annotation [2018-11-23 10:21:40,155 WARN L170 areAnnotationChecker]: init_nondetENTRY has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: ULTIMATE.initFINAL has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L-1 has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L-1 has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L33 has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L33 has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L18-3 has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L18-3 has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L18-3 has no Hoare annotation [2018-11-23 10:21:40,156 WARN L170 areAnnotationChecker]: L7-3 has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: L7-3 has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: L7-3 has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: ULTIMATE.initEXIT has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: ULTIMATE.startFINAL has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: L35 has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: L35 has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: L33-2 has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: L18-4 has no Hoare annotation [2018-11-23 10:21:40,157 WARN L170 areAnnotationChecker]: L18-4 has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: L19 has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: L19 has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: L7-4 has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: L7-2 has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: L35-1 has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: mainFINAL has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: rangesumFINAL has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: L18-2 has no Hoare annotation [2018-11-23 10:21:40,158 WARN L170 areAnnotationChecker]: init_nondetEXIT has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: L41 has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: L41 has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: mainEXIT has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: rangesumEXIT has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: rangesumEXIT has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: rangesumEXIT has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: L41-1 has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: L44-1 has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: L50-1 has no Hoare annotation [2018-11-23 10:21:40,159 WARN L170 areAnnotationChecker]: L44 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L44 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L46-3 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L46-3 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L46-3 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L52 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L52 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L46-4 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L46-2 has no Hoare annotation [2018-11-23 10:21:40,160 WARN L170 areAnnotationChecker]: L53 has no Hoare annotation [2018-11-23 10:21:40,161 WARN L170 areAnnotationChecker]: L53 has no Hoare annotation [2018-11-23 10:21:40,161 WARN L170 areAnnotationChecker]: L52-2 has no Hoare annotation [2018-11-23 10:21:40,161 WARN L170 areAnnotationChecker]: L50 has no Hoare annotation [2018-11-23 10:21:40,161 WARN L170 areAnnotationChecker]: L50 has no Hoare annotation [2018-11-23 10:21:40,161 INFO L163 areAnnotationChecker]: CFG has 0 edges. 0 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. 0 times interpolants missing. [2018-11-23 10:21:40,163 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction CFG 23.11 10:21:40 BoogieIcfgContainer [2018-11-23 10:21:40,164 INFO L132 PluginConnector]: ------------------------ END TraceAbstraction---------------------------- [2018-11-23 10:21:40,164 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 10:21:40,164 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 10:21:40,164 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 10:21:40,165 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 10:20:38" (3/4) ... [2018-11-23 10:21:40,168 INFO L138 WitnessPrinter]: Generating witness for reachability counterexample ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv0 32), |old(#NULL.offset)|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32;#valid := #valid[0bv32 := 0bv1];~N~0 := 0bv32; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv0 32), |old(#NULL.offset)|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] assume true; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(#NULL.base)|=(_ bv0 32), |old(#NULL.offset)|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] RET #85#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] CALL call #t~ret13 := main(); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv0 32)] [?] ~N~0 := #t~nondet4;havoc #t~nondet4; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~N~0, 1bv32);call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call init_nondet(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~0;~i~0 := 0bv32; VAL [init_nondet_~i~0=(_ bv0 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; VAL [init_nondet_~i~0=(_ bv0 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; VAL [init_nondet_~i~0=(_ bv1 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; VAL [init_nondet_~i~0=(_ bv1 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; VAL [init_nondet_~i~0=(_ bv2 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~0, ~N~0);call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32);havoc #t~nondet1; VAL [init_nondet_~i~0=(_ bv2 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post0 := ~i~0;~i~0 := ~bvadd32(1bv32, #t~post0);havoc #t~post0; VAL [init_nondet_~i~0=(_ bv3 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~0, ~N~0); VAL [init_nondet_~i~0=(_ bv3 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [init_nondet_~i~0=(_ bv3 32), init_nondet_~x.base=(_ bv1 32), init_nondet_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |init_nondet_#in~x.base|=(_ bv1 32), |init_nondet_#in~x.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] RET #89#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] havoc ~temp~0;havoc ~ret~1;havoc ~ret2~0;havoc ~ret5~0; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] RET #91#return; VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret5|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~ret~1 := #t~ret5;havoc #t~ret5;call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem6;havoc #t~mem6;call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32);call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32);havoc #t~mem7;call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); VAL [main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] RET #93#return; VAL [main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret8|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~ret2~0 := #t~ret8;havoc #t~ret8;call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32);~temp~0 := #t~mem9;havoc #t~mem9;~i~2 := 0bv32; VAL [main_~i~2=(_ bv0 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; VAL [main_~i~2=(_ bv0 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; VAL [main_~i~2=(_ bv1 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32));call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32);call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32);havoc #t~mem11; VAL [main_~i~2=(_ bv1 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post10 := ~i~2;~i~2 := ~bvadd32(1bv32, #t~post10);havoc #t~post10; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [|#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~x.base, ~x.offset := #in~x.base, #in~x.offset;havoc ~i~1;havoc ~ret~0;~ret~0 := ~sign_extendFrom32To64(0bv32);~cnt~0 := 0bv32;~i~1 := 0bv32; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv0 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv1 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !!~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv0 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv0 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32));call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32);~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3));havoc #t~mem3;~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv2 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] #t~post2 := ~i~1;~i~1 := ~bvadd32(1bv32, #t~post2);havoc #t~post2; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !~bvslt32(~i~1, ~N~0); VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume 0bv32 != ~cnt~0;#res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv2147483647 32), ~N~0=(_ bv3 32)] [?] assume true; VAL [rangesum_~cnt~0=(_ bv1 32), rangesum_~i~1=(_ bv3 32), rangesum_~ret~0=(_ bv2147483647 64), rangesum_~x.base=(_ bv1 32), rangesum_~x.offset=(_ bv0 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), |rangesum_#in~x.base|=(_ bv1 32), |rangesum_#in~x.offset|=(_ bv0 32), |rangesum_#res|=(_ bv2147483647 32), ~N~0=(_ bv3 32)] [?] RET #95#return; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_#t~ret12|=(_ bv2147483647 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] ~ret5~0 := #t~ret12;havoc #t~ret12; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret5~0=(_ bv2147483647 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret5~0=(_ bv2147483647 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] assume !false; VAL [main_~i~2=(_ bv2 32), main_~ret2~0=(_ bv0 32), main_~ret5~0=(_ bv2147483647 32), main_~ret~1=(_ bv0 32), main_~temp~0=(_ bv2147483647 32), |#NULL.base|=(_ bv0 32), |#NULL.offset|=(_ bv0 32), |main_~#x~0.base|=(_ bv1 32), |main_~#x~0.offset|=(_ bv0 32), |old(~N~0)|=(_ bv0 32), ~N~0=(_ bv3 32)] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L4] ~N~0 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33-L55] assume ~bvsgt32(~N~0, 1bv32); [L34] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !~bvslt32(~i~0, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L5-L10] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L35] RET call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L43] call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32); [L43] havoc #t~mem7; [L43] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52-L54] assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL.base, #NULL.offset := 0bv32, 0bv32; [?] #valid := #valid[0bv32 := 0bv1]; [L4] ~N~0 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] ensures true; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(#NULL.base)=0bv32, old(#NULL.offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33-L55] assume ~bvsgt32(~N~0, 1bv32); [L34] call ~#x~0.base, ~#x~0.offset := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !!~bvslt32(~i~0, ~N~0); [L8] call write~intINTTYPE4(#t~nondet1, ~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~0)), 4bv32); [L8] havoc #t~nondet1; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L7-L9] assume !~bvslt32(~i~0, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L5-L10] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x.base=1bv32, ~x.offset=0bv32] [L35] RET call init_nondet(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] call #t~mem6 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] call #t~mem7 := read~intINTTYPE4(~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); [L43] call write~intINTTYPE4(#t~mem7, ~#x~0.base, ~#x~0.offset, 4bv32); [L43] havoc #t~mem7; [L43] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(4bv32, ~#x~0.offset), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] call #t~mem9 := read~intINTTYPE4(~#x~0.base, ~#x~0.offset, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); [L47] call #t~mem11 := read~intINTTYPE4(~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))), 4bv32); [L47] call write~intINTTYPE4(#t~mem11, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~i~2)), 4bv32); [L47] havoc #t~mem11; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] assume !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] call write~intINTTYPE4(~temp~0, ~#x~0.base, ~bvadd32(~#x~0.offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))), 4bv32); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x.base, ~x.offset := #in~x.base, #in~x.offset; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume !~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !!~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x.base=1bv32, ~x.offset=0bv32] [L19-L22] assume ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)); [L20] call #t~mem3 := read~intINTTYPE4(~x.base, ~bvadd32(~x.offset, ~bvmul32(4bv32, ~i~1)), 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L18-L23] assume !~bvslt32(~i~1, ~N~0); VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L24-L27] assume 0bv32 != ~cnt~0; [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L12-L28] ensures true; VAL [#in~x.base=1bv32, #in~x.offset=0bv32, #NULL.base=0bv32, #NULL.offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x.base=1bv32, ~x.offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0.base, ~#x~0.offset); VAL [#NULL.base=0bv32, #NULL.offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52-L54] assume ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL.base=0bv32, #NULL.offset=0bv32, old(~N~0)=0bv32, ~#x~0.base=1bv32, ~#x~0.offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] ----- ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] #NULL := { base: 0bv32, offset: 0bv32 }; [?] #valid[0bv32] := 0bv1; [L4] ~N~0 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(#NULL!base)=0bv32, old(#NULL!offset)=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, ~N~0=0bv32] [?] CALL call #t~ret13 := main(); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=0bv32] [L32] ~N~0 := #t~nondet4; [L32] havoc #t~nondet4; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L33] COND TRUE ~bvsgt32(~N~0, 1bv32) [L34] FCALL call ~#x~0 := #Ultimate.alloc(~bvmul32(4bv32, ~N~0)); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L35] CALL call init_nondet(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L5-L10] ~x := #in~x; [L6] havoc ~i~0; [L7] ~i~0 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=0bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=1bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND FALSE !(!~bvslt32(~i~0, ~N~0)) [L8] FCALL call write~intINTTYPE4(#t~nondet1, { base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~0)) }, 4bv32); [L8] havoc #t~nondet1; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=2bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7] #t~post0 := ~i~0; [L7] ~i~0 := ~bvadd32(1bv32, #t~post0); [L7] havoc #t~post0; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L7-L9] COND TRUE !~bvslt32(~i~0, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~i~0=3bv32, ~N~0=3bv32, ~x!base=1bv32, ~x!offset=0bv32] [L35] RET call init_nondet(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L36] havoc ~temp~0; [L37] havoc ~ret~1; [L38] havoc ~ret2~0; [L39] havoc ~ret5~0; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] CALL call #t~ret5 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L41] RET call #t~ret5 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret5=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32] [L41] ~ret~1 := #t~ret5; [L41] havoc #t~ret5; [L43] FCALL call #t~mem6 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] ~temp~0 := #t~mem6; [L43] havoc #t~mem6; [L43] FCALL call #t~mem7 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); [L43] FCALL call write~intINTTYPE4(#t~mem7, { base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L43] havoc #t~mem7; [L43] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(4bv32, ~#x~0!offset) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] CALL call #t~ret8 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L44] RET call #t~ret8 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret8=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~N~0=3bv32, ~ret~1=0bv32, ~temp~0=0bv32] [L44] ~ret2~0 := #t~ret8; [L44] havoc #t~ret8; [L45] FCALL call #t~mem9 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~#x~0!offset }, 4bv32); [L45] ~temp~0 := #t~mem9; [L45] havoc #t~mem9; [L46] ~i~2 := 0bv32; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=0bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND FALSE !(!~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32))) [L47] FCALL call #t~mem11 := read~intINTTYPE4({ base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvadd32(1bv32, ~i~2))) }, 4bv32); [L47] FCALL call write~intINTTYPE4(#t~mem11, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~i~2)) }, 4bv32); [L47] havoc #t~mem11; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=1bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46] #t~post10 := ~i~2; [L46] ~i~2 := ~bvadd32(1bv32, #t~post10); [L46] havoc #t~post10; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L46-L48] COND TRUE !~bvslt32(~i~2, ~bvsub32(~N~0, 1bv32)) VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L49] FCALL call write~intINTTYPE4(~temp~0, { base: ~#x~0!base, offset: ~bvadd32(~#x~0!offset, ~bvmul32(4bv32, ~bvsub32(~N~0, 1bv32))) }, 4bv32); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] CALL call #t~ret12 := rangesum(~#x~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~N~0=3bv32] [L12-L28] ~x := #in~x; [L14] havoc ~i~1; [L15] havoc ~ret~0; [L16] ~ret~0 := ~sign_extendFrom32To64(0bv32); [L17] ~cnt~0 := 0bv32; [L18] ~i~1 := 0bv32; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=0bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND FALSE !(~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32))) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=1bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND FALSE !(!~bvslt32(~i~1, ~N~0)) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=0bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=0bv64, ~x!base=1bv32, ~x!offset=0bv32] [L19] COND TRUE ~bvsgt32(~i~1, ~bvsdiv32(~N~0, 2bv32)) [L20] FCALL call #t~mem3 := read~intINTTYPE4({ base: ~x!base, offset: ~bvadd32(~x!offset, ~bvmul32(4bv32, ~i~1)) }, 4bv32); [L20] ~ret~0 := ~bvadd64(~ret~0, ~sign_extendFrom32To64(#t~mem3)); [L20] havoc #t~mem3; [L21] ~cnt~0 := ~bvadd32(1bv32, ~cnt~0); VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=2bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18] #t~post2 := ~i~1; [L18] ~i~1 := ~bvadd32(1bv32, #t~post2); [L18] havoc #t~post2; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L18-L23] COND TRUE !~bvslt32(~i~1, ~N~0) VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L24] COND TRUE 0bv32 != ~cnt~0 [L25] #res := ~bvsdiv64(~ret~0, ~sign_extendFrom32To64(~cnt~0))[32:0]; VAL [#in~x!base=1bv32, #in~x!offset=0bv32, #NULL!base=0bv32, #NULL!offset=0bv32, #res=2147483647bv32, old(~N~0)=0bv32, ~cnt~0=1bv32, ~i~1=3bv32, ~N~0=3bv32, ~ret~0=2147483647bv64, ~x!base=1bv32, ~x!offset=0bv32] [L50] RET call #t~ret12 := rangesum(~#x~0); VAL [#NULL!base=0bv32, #NULL!offset=0bv32, #t~ret12=2147483647bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L50] ~ret5~0 := #t~ret12; [L50] havoc #t~ret12; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L52] COND TRUE ~ret~1 != ~ret2~0 || ~ret~1 != ~ret5~0 VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L53] assert false; VAL [#NULL!base=0bv32, #NULL!offset=0bv32, old(~N~0)=0bv32, ~#x~0!base=1bv32, ~#x~0!offset=0bv32, ~i~2=2bv32, ~N~0=3bv32, ~ret2~0=0bv32, ~ret5~0=2147483647bv32, ~ret~1=0bv32, ~temp~0=2147483647bv32] [L4] int N; VAL [\old(N)=0, N=0] [L32] N = __VERIFIER_nondet_int() [L33] COND TRUE N > 1 [L34] int x[N]; VAL [\old(N)=0, N=3, x={1:0}] [L35] CALL init_nondet(x) VAL [\old(N)=0, N=3, x={1:0}] [L6] int i; [L7] i = 0 VAL [\old(N)=0, i=0, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=1, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=2, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=3, N=3, x={1:0}, x={1:0}] [L7] COND FALSE !(i < N) VAL [\old(N)=0, i=3, N=3, x={1:0}, x={1:0}] [L35] RET init_nondet(x) VAL [\old(N)=0, N=3, x={1:0}] [L36] int temp; [L37] int ret; [L38] int ret2; [L39] int ret5; VAL [\old(N)=0, N=3, x={1:0}] [L41] CALL, EXPR rangesum(x) VAL [\old(N)=0, N=3, x={1:0}] [L14] int i; [L15] long long ret; [L16] ret = 0 [L17] int cnt = 0; [L18] i = 0 VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L41] RET, EXPR rangesum(x) VAL [\old(N)=0, N=3, rangesum(x)=0, x={1:0}] [L41] ret = rangesum(x) [L43] EXPR x[0] [L43] temp=x[0] [L43] EXPR x[1] [L43] x[0] = x[1] [L43] x[1] = temp VAL [\old(N)=0, N=3, ret=0, temp=0, x={1:0}] [L44] CALL, EXPR rangesum(x) VAL [\old(N)=0, N=3, x={1:0}] [L14] int i; [L15] long long ret; [L16] ret = 0 [L17] int cnt = 0; [L18] i = 0 VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L44] RET, EXPR rangesum(x) VAL [\old(N)=0, N=3, rangesum(x)=0, ret=0, temp=0, x={1:0}] [L44] ret2 = rangesum(x) [L45] EXPR x[0] [L45] temp=x[0] [L46] int i =0 ; VAL [\old(N)=0, i=0, N=3, ret=0, ret2=0, temp=2147483647, x={1:0}] [L46] COND TRUE i N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=2147483647, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=2147483647, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L50] RET, EXPR rangesum(x) VAL [\old(N)=0, i=2, N=3, rangesum(x)=2147483647, ret=0, ret2=0, temp=2147483647, x={1:0}] [L50] ret5 = rangesum(x) [L52] COND TRUE ret != ret2 || ret !=ret5 VAL [\old(N)=0, i=2, N=3, ret=0, ret2=0, ret5=2147483647, temp=2147483647, x={1:0}] [L53] __VERIFIER_error() VAL [\old(N)=0, i=2, N=3, ret=0, ret2=0, ret5=2147483647, temp=2147483647, x={1:0}] ----- [2018-11-23 10:21:40,312 INFO L145 WitnessManager]: Wrote witness to /storage/repos/svcomp/c/reducercommutativity/rangesum_false-unreach-call_true-termination.i-witness.graphml [2018-11-23 10:21:40,312 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 10:21:40,314 INFO L168 Benchmark]: Toolchain (without parser) took 63973.70 ms. Allocated memory was 1.5 GB in the beginning and 2.6 GB in the end (delta: 1.1 GB). Free memory was 1.4 GB in the beginning and 1.9 GB in the end (delta: -456.8 MB). Peak memory consumption was 612.2 MB. Max. memory is 7.1 GB. [2018-11-23 10:21:40,315 INFO L168 Benchmark]: CDTParser took 0.22 ms. Allocated memory is still 1.5 GB. Free memory is still 1.4 GB. There was no memory consumed. Max. memory is 7.1 GB. [2018-11-23 10:21:40,315 INFO L168 Benchmark]: CACSL2BoogieTranslator took 394.34 ms. Allocated memory is still 1.5 GB. Free memory was 1.4 GB in the beginning and 1.4 GB in the end (delta: 10.6 MB). Peak memory consumption was 10.6 MB. Max. memory is 7.1 GB. [2018-11-23 10:21:40,315 INFO L168 Benchmark]: Boogie Procedure Inliner took 30.43 ms. Allocated memory is still 1.5 GB. Free memory is still 1.4 GB. There was no memory consumed. Max. memory is 7.1 GB. [2018-11-23 10:21:40,316 INFO L168 Benchmark]: Boogie Preprocessor took 46.90 ms. Allocated memory is still 1.5 GB. Free memory is still 1.4 GB. There was no memory consumed. Max. memory is 7.1 GB. [2018-11-23 10:21:40,316 INFO L168 Benchmark]: RCFGBuilder took 1387.80 ms. Allocated memory was 1.5 GB in the beginning and 2.2 GB in the end (delta: 699.9 MB). Free memory was 1.4 GB in the beginning and 2.1 GB in the end (delta: -729.1 MB). Peak memory consumption was 15.2 MB. Max. memory is 7.1 GB. [2018-11-23 10:21:40,316 INFO L168 Benchmark]: TraceAbstraction took 61959.33 ms. Allocated memory was 2.2 GB in the beginning and 2.6 GB in the end (delta: 369.1 MB). Free memory was 2.1 GB in the beginning and 1.9 GB in the end (delta: 244.0 MB). Peak memory consumption was 613.1 MB. Max. memory is 7.1 GB. [2018-11-23 10:21:40,317 INFO L168 Benchmark]: Witness Printer took 148.32 ms. Allocated memory is still 2.6 GB. Free memory was 1.9 GB in the beginning and 1.9 GB in the end (delta: 17.7 MB). Peak memory consumption was 17.7 MB. Max. memory is 7.1 GB. [2018-11-23 10:21:40,319 INFO L336 ainManager$Toolchain]: ####################### End [Toolchain 1] ####################### --- Results --- * Results from de.uni_freiburg.informatik.ultimate.core: - GenericResult: Assertions are enabled Assertions are enabled - StatisticsResult: Toolchain Benchmarks Benchmark results are: * CDTParser took 0.22 ms. Allocated memory is still 1.5 GB. Free memory is still 1.4 GB. There was no memory consumed. Max. memory is 7.1 GB. * CACSL2BoogieTranslator took 394.34 ms. Allocated memory is still 1.5 GB. Free memory was 1.4 GB in the beginning and 1.4 GB in the end (delta: 10.6 MB). Peak memory consumption was 10.6 MB. Max. memory is 7.1 GB. * Boogie Procedure Inliner took 30.43 ms. Allocated memory is still 1.5 GB. Free memory is still 1.4 GB. There was no memory consumed. Max. memory is 7.1 GB. * Boogie Preprocessor took 46.90 ms. Allocated memory is still 1.5 GB. Free memory is still 1.4 GB. There was no memory consumed. Max. memory is 7.1 GB. * RCFGBuilder took 1387.80 ms. Allocated memory was 1.5 GB in the beginning and 2.2 GB in the end (delta: 699.9 MB). Free memory was 1.4 GB in the beginning and 2.1 GB in the end (delta: -729.1 MB). Peak memory consumption was 15.2 MB. Max. memory is 7.1 GB. * TraceAbstraction took 61959.33 ms. Allocated memory was 2.2 GB in the beginning and 2.6 GB in the end (delta: 369.1 MB). Free memory was 2.1 GB in the beginning and 1.9 GB in the end (delta: 244.0 MB). Peak memory consumption was 613.1 MB. Max. memory is 7.1 GB. * Witness Printer took 148.32 ms. Allocated memory is still 2.6 GB. Free memory was 1.9 GB in the beginning and 1.9 GB in the end (delta: 17.7 MB). Peak memory consumption was 17.7 MB. Max. memory is 7.1 GB. * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction: - CounterExampleResult [Line: 53]: a call of __VERIFIER_error() is reachable a call of __VERIFIER_error() is reachable We found a FailurePath: [L4] int N; VAL [\old(N)=0, N=0] [L32] N = __VERIFIER_nondet_int() [L33] COND TRUE N > 1 [L34] int x[N]; VAL [\old(N)=0, N=3, x={1:0}] [L35] CALL init_nondet(x) VAL [\old(N)=0, N=3, x={1:0}] [L6] int i; [L7] i = 0 VAL [\old(N)=0, i=0, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=1, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=2, N=3, x={1:0}, x={1:0}] [L7] COND TRUE i < N [L8] x[i] = __VERIFIER_nondet_int() [L7] i++ VAL [\old(N)=0, i=3, N=3, x={1:0}, x={1:0}] [L7] COND FALSE !(i < N) VAL [\old(N)=0, i=3, N=3, x={1:0}, x={1:0}] [L35] RET init_nondet(x) VAL [\old(N)=0, N=3, x={1:0}] [L36] int temp; [L37] int ret; [L38] int ret2; [L39] int ret5; VAL [\old(N)=0, N=3, x={1:0}] [L41] CALL, EXPR rangesum(x) VAL [\old(N)=0, N=3, x={1:0}] [L14] int i; [L15] long long ret; [L16] ret = 0 [L17] int cnt = 0; [L18] i = 0 VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L41] RET, EXPR rangesum(x) VAL [\old(N)=0, N=3, rangesum(x)=0, x={1:0}] [L41] ret = rangesum(x) [L43] EXPR x[0] [L43] temp=x[0] [L43] EXPR x[1] [L43] x[0] = x[1] [L43] x[1] = temp VAL [\old(N)=0, N=3, ret=0, temp=0, x={1:0}] [L44] CALL, EXPR rangesum(x) VAL [\old(N)=0, N=3, x={1:0}] [L14] int i; [L15] long long ret; [L16] ret = 0 [L17] int cnt = 0; [L18] i = 0 VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=0, cnt=1, i=3, N=3, ret=0, x={1:0}, x={1:0}] [L44] RET, EXPR rangesum(x) VAL [\old(N)=0, N=3, rangesum(x)=0, ret=0, temp=0, x={1:0}] [L44] ret2 = rangesum(x) [L45] EXPR x[0] [L45] temp=x[0] [L46] int i =0 ; VAL [\old(N)=0, i=0, N=3, ret=0, ret2=0, temp=2147483647, x={1:0}] [L46] COND TRUE i N/2) VAL [\old(N)=0, cnt=0, i=0, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND FALSE !(i > N/2) VAL [\old(N)=0, cnt=0, i=1, N=3, ret=0, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L18] COND TRUE i < N VAL [\old(N)=0, cnt=0, i=2, N=3, ret=0, x={1:0}, x={1:0}] [L19] COND TRUE i > N/2 [L20] EXPR x[i] [L20] ret = ret + x[i] [L21] cnt = cnt + 1 VAL [\old(N)=0, cnt=1, i=2, N=3, ret=2147483647, x={1:0}, x={1:0}] [L18] i++ VAL [\old(N)=0, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L18] COND FALSE !(i < N) VAL [\old(N)=0, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L24] COND TRUE cnt !=0 [L25] return ret / cnt; VAL [\old(N)=0, \result=2147483647, cnt=1, i=3, N=3, ret=2147483647, x={1:0}, x={1:0}] [L50] RET, EXPR rangesum(x) VAL [\old(N)=0, i=2, N=3, rangesum(x)=2147483647, ret=0, ret2=0, temp=2147483647, x={1:0}] [L50] ret5 = rangesum(x) [L52] COND TRUE ret != ret2 || ret !=ret5 VAL [\old(N)=0, i=2, N=3, ret=0, ret2=0, ret5=2147483647, temp=2147483647, x={1:0}] [L53] __VERIFIER_error() VAL [\old(N)=0, i=2, N=3, ret=0, ret2=0, ret5=2147483647, temp=2147483647, x={1:0}] - StatisticsResult: Ultimate Automizer benchmark data CFG has 5 procedures, 39 locations, 1 error locations. UNSAFE Result, 61.8s OverallTime, 11 OverallIterations, 9 TraceHistogramMax, 29.7s AutomataDifference, 0.0s DeadEndRemovalTime, 0.0s HoareAnnotationTime, HoareTripleCheckerStatistics: 336 SDtfs, 786 SDslu, 704 SDs, 0 SdLazy, 1202 SolverSat, 280 SolverUnsat, 0 SolverUnknown, 0 SolverNotchecked, 5.8s Time, PredicateUnifierStatistics: 0 DeclaredPredicates, 805 GetRequests, 699 SyntacticMatches, 14 SemanticMatches, 92 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 366 ImplicationChecksByTransitivity, 2.7s Time, 0.0s BasicInterpolantAutomatonTime, BiggestAbstraction: size=105occurred in iteration=10, traceCheckStatistics: No data available, InterpolantConsolidationStatistics: No data available, PathInvariantsStatistics: No data available, 0/0 InterpolantCoveringCapability, TotalInterpolationStatistics: No data available, 0.0s AbstIntTime, 0 AbstIntIterations, 0 AbstIntStrong, NaN AbsIntWeakeningRatio, NaN AbsIntAvgWeakeningVarsNumRemoved, NaN AbsIntAvgWeakenedConjuncts, 0.0s DumpTime, AutomataMinimizationStatistics: 0.9s AutomataMinimizationTime, 10 MinimizatonAttempts, 47 StatesRemovedByMinimization, 9 NontrivialMinimizations, HoareAnnotationStatistics: No data available, RefinementEngineStatistics: TraceCheckStatistics: 0.1s SsaConstructionTime, 17.1s SatisfiabilityAnalysisTime, 6.7s InterpolantComputationTime, 581 NumberOfCodeBlocks, 561 NumberOfCodeBlocksAsserted, 20 NumberOfCheckSat, 779 ConstructedInterpolants, 0 QuantifiedInterpolants, 131556 SizeOfPredicates, 17 NumberOfNonLiveVariables, 1084 ConjunctsInSsa, 59 ConjunctsInUnsatCore, 15 InterpolantComputations, 6 PerfectInterpolantSequences, 795/913 InterpolantCoveringCapability, InvariantSynthesisStatistics: No data available, InterpolantConsolidationStatistics: No data available, ReuseStatistics: No data available RESULT: Ultimate proved your program to be incorrect! Received shutdown request...