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_Default.epf -i ../../../trunk/examples/svcomp/loops/verisec_OpenSER__cases1_stripFullBoth_arr_false-unreach-call_true-termination.i -------------------------------------------------------------------------------- This is Ultimate 0.1.23-61f4311 [2018-11-23 13:02:58,051 INFO L170 SettingsManager]: Resetting all preferences to default values... [2018-11-23 13:02:58,053 INFO L174 SettingsManager]: Resetting UltimateCore preferences to default values [2018-11-23 13:02:58,068 INFO L177 SettingsManager]: Ultimate Commandline Interface provides no preferences, ignoring... [2018-11-23 13:02:58,068 INFO L174 SettingsManager]: Resetting Boogie Preprocessor preferences to default values [2018-11-23 13:02:58,069 INFO L174 SettingsManager]: Resetting Boogie Procedure Inliner preferences to default values [2018-11-23 13:02:58,071 INFO L174 SettingsManager]: Resetting Abstract Interpretation preferences to default values [2018-11-23 13:02:58,072 INFO L174 SettingsManager]: Resetting LassoRanker preferences to default values [2018-11-23 13:02:58,074 INFO L174 SettingsManager]: Resetting Reaching Definitions preferences to default values [2018-11-23 13:02:58,075 INFO L174 SettingsManager]: Resetting SyntaxChecker preferences to default values [2018-11-23 13:02:58,076 INFO L177 SettingsManager]: Büchi Program Product provides no preferences, ignoring... [2018-11-23 13:02:58,076 INFO L174 SettingsManager]: Resetting LTL2Aut preferences to default values [2018-11-23 13:02:58,077 INFO L174 SettingsManager]: Resetting PEA to Boogie preferences to default values [2018-11-23 13:02:58,078 INFO L174 SettingsManager]: Resetting BlockEncodingV2 preferences to default values [2018-11-23 13:02:58,079 INFO L174 SettingsManager]: Resetting ChcToBoogie preferences to default values [2018-11-23 13:02:58,080 INFO L174 SettingsManager]: Resetting AutomataScriptInterpreter preferences to default values [2018-11-23 13:02:58,081 INFO L174 SettingsManager]: Resetting BuchiAutomizer preferences to default values [2018-11-23 13:02:58,083 INFO L174 SettingsManager]: Resetting CACSL2BoogieTranslator preferences to default values [2018-11-23 13:02:58,085 INFO L174 SettingsManager]: Resetting CodeCheck preferences to default values [2018-11-23 13:02:58,087 INFO L174 SettingsManager]: Resetting InvariantSynthesis preferences to default values [2018-11-23 13:02:58,088 INFO L174 SettingsManager]: Resetting RCFGBuilder preferences to default values [2018-11-23 13:02:58,089 INFO L174 SettingsManager]: Resetting TraceAbstraction preferences to default values [2018-11-23 13:02:58,091 INFO L177 SettingsManager]: TraceAbstractionConcurrent provides no preferences, ignoring... [2018-11-23 13:02:58,092 INFO L177 SettingsManager]: TraceAbstractionWithAFAs provides no preferences, ignoring... [2018-11-23 13:02:58,092 INFO L174 SettingsManager]: Resetting TreeAutomizer preferences to default values [2018-11-23 13:02:58,093 INFO L174 SettingsManager]: Resetting IcfgTransformer preferences to default values [2018-11-23 13:02:58,094 INFO L174 SettingsManager]: Resetting Boogie Printer preferences to default values [2018-11-23 13:02:58,095 INFO L174 SettingsManager]: Resetting ReqPrinter preferences to default values [2018-11-23 13:02:58,096 INFO L174 SettingsManager]: Resetting Witness Printer preferences to default values [2018-11-23 13:02:58,097 INFO L177 SettingsManager]: Boogie PL CUP Parser provides no preferences, ignoring... [2018-11-23 13:02:58,097 INFO L174 SettingsManager]: Resetting CDTParser preferences to default values [2018-11-23 13:02:58,098 INFO L177 SettingsManager]: AutomataScriptParser provides no preferences, ignoring... [2018-11-23 13:02:58,098 INFO L177 SettingsManager]: ReqParser provides no preferences, ignoring... [2018-11-23 13:02:58,098 INFO L174 SettingsManager]: Resetting SmtParser preferences to default values [2018-11-23 13:02:58,099 INFO L174 SettingsManager]: Resetting Witness Parser preferences to default values [2018-11-23 13:02:58,100 INFO L181 SettingsManager]: Finished resetting all preferences to default values... [2018-11-23 13:02:58,101 INFO L98 SettingsManager]: Beginning loading settings from /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/../../../trunk/examples/settings/default/automizer/svcomp-Reach-32bit-Automizer_Default.epf [2018-11-23 13:02:58,116 INFO L110 SettingsManager]: Loading preferences was successful [2018-11-23 13:02:58,116 INFO L112 SettingsManager]: Preferences different from defaults after loading the file: [2018-11-23 13:02:58,117 INFO L131 SettingsManager]: Preferences of Boogie Procedure Inliner differ from their defaults: [2018-11-23 13:02:58,117 INFO L133 SettingsManager]: * ... calls to implemented procedures=ONLY_FOR_CONCURRENT_PROGRAMS [2018-11-23 13:02:58,118 INFO L131 SettingsManager]: Preferences of BlockEncodingV2 differ from their defaults: [2018-11-23 13:02:58,118 INFO L133 SettingsManager]: * Create parallel compositions if possible=false [2018-11-23 13:02:58,118 INFO L133 SettingsManager]: * Use SBE=true [2018-11-23 13:02:58,119 INFO L131 SettingsManager]: Preferences of CACSL2BoogieTranslator differ from their defaults: [2018-11-23 13:02:58,119 INFO L133 SettingsManager]: * sizeof long=4 [2018-11-23 13:02:58,119 INFO L133 SettingsManager]: * Overapproximate operations on floating types=true [2018-11-23 13:02:58,119 INFO L133 SettingsManager]: * sizeof POINTER=4 [2018-11-23 13:02:58,119 INFO L133 SettingsManager]: * Check division by zero=IGNORE [2018-11-23 13:02:58,120 INFO L133 SettingsManager]: * Pointer to allocated memory at dereference=IGNORE [2018-11-23 13:02:58,120 INFO L133 SettingsManager]: * If two pointers are subtracted or compared they have the same base address=IGNORE [2018-11-23 13:02:58,120 INFO L133 SettingsManager]: * Check array bounds for arrays that are off heap=IGNORE [2018-11-23 13:02:58,120 INFO L133 SettingsManager]: * sizeof long double=12 [2018-11-23 13:02:58,120 INFO L133 SettingsManager]: * Check if freed pointer was valid=false [2018-11-23 13:02:58,120 INFO L133 SettingsManager]: * Use constant arrays=true [2018-11-23 13:02:58,121 INFO L133 SettingsManager]: * Pointer base address is valid at dereference=IGNORE [2018-11-23 13:02:58,121 INFO L131 SettingsManager]: Preferences of RCFGBuilder differ from their defaults: [2018-11-23 13:02:58,121 INFO L133 SettingsManager]: * Size of a code block=SequenceOfStatements [2018-11-23 13:02:58,121 INFO L133 SettingsManager]: * To the following directory=./dump/ [2018-11-23 13:02:58,121 INFO L133 SettingsManager]: * SMT solver=External_DefaultMode [2018-11-23 13:02:58,122 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in -t:2000 [2018-11-23 13:02:58,122 INFO L131 SettingsManager]: Preferences of TraceAbstraction differ from their defaults: [2018-11-23 13:02:58,122 INFO L133 SettingsManager]: * Compute Interpolants along a Counterexample=FPandBP [2018-11-23 13:02:58,122 INFO L133 SettingsManager]: * Positions where we compute the Hoare Annotation=LoopsAndPotentialCycles [2018-11-23 13:02:58,122 INFO L133 SettingsManager]: * Trace refinement strategy=CAMEL [2018-11-23 13:02:58,123 INFO L133 SettingsManager]: * SMT solver=External_ModelsAndUnsatCoreMode [2018-11-23 13:02:58,123 INFO L133 SettingsManager]: * Command for external solver=z3 SMTLIB2_COMPLIANT=true -memory:2024 -smt2 -in [2018-11-23 13:02:58,123 INFO L133 SettingsManager]: * Compute Hoare Annotation of negated interpolant automaton, abstraction and CFG=true [2018-11-23 13:02:58,167 INFO L81 nceAwareModelManager]: Repository-Root is: /tmp [2018-11-23 13:02:58,179 INFO L258 ainManager$Toolchain]: [Toolchain 1]: Applicable parser(s) successfully (re)initialized [2018-11-23 13:02:58,183 INFO L214 ainManager$Toolchain]: [Toolchain 1]: Toolchain selected. [2018-11-23 13:02:58,185 INFO L271 PluginConnector]: Initializing CDTParser... [2018-11-23 13:02:58,185 INFO L276 PluginConnector]: CDTParser initialized [2018-11-23 13:02:58,186 INFO L418 ainManager$Toolchain]: [Toolchain 1]: Parsing single file: /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/../../../trunk/examples/svcomp/loops/verisec_OpenSER__cases1_stripFullBoth_arr_false-unreach-call_true-termination.i [2018-11-23 13:02:58,243 INFO L221 CDTParser]: Created temporary CDT project at /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/0dd1d9396/4d200df339234a289a91718c81d94578/FLAG926d6cf87 [2018-11-23 13:02:58,761 INFO L307 CDTParser]: Found 1 translation units. [2018-11-23 13:02:58,761 INFO L161 CDTParser]: Scanning /storage/repos/ultimate/trunk/examples/svcomp/loops/verisec_OpenSER__cases1_stripFullBoth_arr_false-unreach-call_true-termination.i [2018-11-23 13:02:58,774 INFO L355 CDTParser]: About to delete temporary CDT project at /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/0dd1d9396/4d200df339234a289a91718c81d94578/FLAG926d6cf87 [2018-11-23 13:02:59,037 INFO L363 CDTParser]: Successfully deleted /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/data/0dd1d9396/4d200df339234a289a91718c81d94578 [2018-11-23 13:02:59,047 INFO L296 ainManager$Toolchain]: ####################### [Toolchain 1] ####################### [2018-11-23 13:02:59,049 INFO L131 ToolchainWalker]: Walking toolchain with 6 elements. [2018-11-23 13:02:59,051 INFO L113 PluginConnector]: ------------------------CACSL2BoogieTranslator---------------------------- [2018-11-23 13:02:59,051 INFO L271 PluginConnector]: Initializing CACSL2BoogieTranslator... [2018-11-23 13:02:59,057 INFO L276 PluginConnector]: CACSL2BoogieTranslator initialized [2018-11-23 13:02:59,059 INFO L185 PluginConnector]: Executing the observer ACSLObjectContainerObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,063 INFO L205 PluginConnector]: Invalid model from CACSL2BoogieTranslator for observer de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.ACSLObjectContainerObserver@709330e8 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59, skipping insertion in model container [2018-11-23 13:02:59,063 INFO L185 PluginConnector]: Executing the observer CACSL2BoogieTranslatorObserver from plugin CACSL2BoogieTranslator for "CDTParser AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,074 INFO L145 MainTranslator]: Starting translation in SV-COMP mode [2018-11-23 13:02:59,104 INFO L176 MainTranslator]: Built tables and reachable declarations [2018-11-23 13:02:59,352 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 13:02:59,364 INFO L191 MainTranslator]: Completed pre-run [2018-11-23 13:02:59,404 INFO L201 PostProcessor]: Analyzing one entry point: main [2018-11-23 13:02:59,428 INFO L195 MainTranslator]: Completed translation [2018-11-23 13:02:59,428 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59 WrapperNode [2018-11-23 13:02:59,428 INFO L132 PluginConnector]: ------------------------ END CACSL2BoogieTranslator---------------------------- [2018-11-23 13:02:59,429 INFO L113 PluginConnector]: ------------------------Boogie Procedure Inliner---------------------------- [2018-11-23 13:02:59,430 INFO L271 PluginConnector]: Initializing Boogie Procedure Inliner... [2018-11-23 13:02:59,430 INFO L276 PluginConnector]: Boogie Procedure Inliner initialized [2018-11-23 13:02:59,439 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,449 INFO L185 PluginConnector]: Executing the observer Inliner from plugin Boogie Procedure Inliner for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,459 INFO L132 PluginConnector]: ------------------------ END Boogie Procedure Inliner---------------------------- [2018-11-23 13:02:59,459 INFO L113 PluginConnector]: ------------------------Boogie Preprocessor---------------------------- [2018-11-23 13:02:59,459 INFO L271 PluginConnector]: Initializing Boogie Preprocessor... [2018-11-23 13:02:59,459 INFO L276 PluginConnector]: Boogie Preprocessor initialized [2018-11-23 13:02:59,468 INFO L185 PluginConnector]: Executing the observer EnsureBoogieModelObserver from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,468 INFO L185 PluginConnector]: Executing the observer TypeChecker from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,471 INFO L185 PluginConnector]: Executing the observer ConstExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,471 INFO L185 PluginConnector]: Executing the observer StructExpander from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,486 INFO L185 PluginConnector]: Executing the observer UnstructureCode from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,495 INFO L185 PluginConnector]: Executing the observer FunctionInliner from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,497 INFO L185 PluginConnector]: Executing the observer BoogieSymbolTableConstructor from plugin Boogie Preprocessor for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (1/1) ... [2018-11-23 13:02:59,500 INFO L132 PluginConnector]: ------------------------ END Boogie Preprocessor---------------------------- [2018-11-23 13:02:59,500 INFO L113 PluginConnector]: ------------------------RCFGBuilder---------------------------- [2018-11-23 13:02:59,501 INFO L271 PluginConnector]: Initializing RCFGBuilder... [2018-11-23 13:02:59,501 INFO L276 PluginConnector]: RCFGBuilder initialized [2018-11-23 13:02:59,502 INFO L185 PluginConnector]: Executing the observer RCFGBuilderObserver from plugin RCFGBuilder for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (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 13:02:59,633 INFO L130 BoogieDeclarations]: Found specification of procedure r_strncpy [2018-11-23 13:02:59,634 INFO L130 BoogieDeclarations]: Found specification of procedure main [2018-11-23 13:02:59,634 INFO L138 BoogieDeclarations]: Found implementation of procedure main [2018-11-23 13:02:59,634 INFO L130 BoogieDeclarations]: Found specification of procedure write~int [2018-11-23 13:02:59,634 INFO L130 BoogieDeclarations]: Found specification of procedure parse_expression_list [2018-11-23 13:02:59,634 INFO L138 BoogieDeclarations]: Found implementation of procedure parse_expression_list [2018-11-23 13:02:59,634 INFO L130 BoogieDeclarations]: Found specification of procedure #Ultimate.alloc [2018-11-23 13:02:59,635 INFO L130 BoogieDeclarations]: Found specification of procedure read~int [2018-11-23 13:02:59,635 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.init [2018-11-23 13:02:59,635 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.init [2018-11-23 13:02:59,635 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.start [2018-11-23 13:02:59,635 INFO L138 BoogieDeclarations]: Found implementation of procedure ULTIMATE.start [2018-11-23 13:02:59,636 INFO L130 BoogieDeclarations]: Found specification of procedure __VERIFIER_assert [2018-11-23 13:02:59,636 INFO L138 BoogieDeclarations]: Found implementation of procedure __VERIFIER_assert [2018-11-23 13:02:59,636 INFO L130 BoogieDeclarations]: Found specification of procedure ULTIMATE.dealloc [2018-11-23 13:03:00,628 INFO L275 CfgBuilder]: Using the 1 location(s) as analysis (start of procedure ULTIMATE.start) [2018-11-23 13:03:00,629 INFO L280 CfgBuilder]: Removed 3 assue(true) statements. [2018-11-23 13:03:00,629 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:03:00 BoogieIcfgContainer [2018-11-23 13:03:00,629 INFO L132 PluginConnector]: ------------------------ END RCFGBuilder---------------------------- [2018-11-23 13:03:00,630 INFO L113 PluginConnector]: ------------------------TraceAbstraction---------------------------- [2018-11-23 13:03:00,630 INFO L271 PluginConnector]: Initializing TraceAbstraction... [2018-11-23 13:03:00,633 INFO L276 PluginConnector]: TraceAbstraction initialized [2018-11-23 13:03:00,634 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "CDTParser AST 23.11 01:02:59" (1/3) ... [2018-11-23 13:03:00,635 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@5f600d74 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 01:03:00, skipping insertion in model container [2018-11-23 13:03:00,635 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator AST 23.11 01:02:59" (2/3) ... [2018-11-23 13:03:00,635 INFO L205 PluginConnector]: Invalid model from TraceAbstraction for observer de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction.TraceAbstractionObserver@5f600d74 and model type de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction AST 23.11 01:03:00, skipping insertion in model container [2018-11-23 13:03:00,635 INFO L185 PluginConnector]: Executing the observer TraceAbstractionObserver from plugin TraceAbstraction for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:03:00" (3/3) ... [2018-11-23 13:03:00,637 INFO L112 eAbstractionObserver]: Analyzing ICFG verisec_OpenSER__cases1_stripFullBoth_arr_false-unreach-call_true-termination.i [2018-11-23 13:03:00,646 INFO L156 ceAbstractionStarter]: Automizer settings: Hoare:true NWA Interpolation:FPandBP Determinization: PREDICATE_ABSTRACTION [2018-11-23 13:03:00,653 INFO L168 ceAbstractionStarter]: Appying trace abstraction to program that has 1 error locations. [2018-11-23 13:03:00,668 INFO L257 AbstractCegarLoop]: Starting to check reachability of 1 error locations. [2018-11-23 13:03:00,697 INFO L133 ementStrategyFactory]: Using default assertion order modulation [2018-11-23 13:03:00,698 INFO L382 AbstractCegarLoop]: Interprodecural is true [2018-11-23 13:03:00,698 INFO L383 AbstractCegarLoop]: Hoare is true [2018-11-23 13:03:00,698 INFO L384 AbstractCegarLoop]: Compute interpolants for FPandBP [2018-11-23 13:03:00,699 INFO L385 AbstractCegarLoop]: Backedges is STRAIGHT_LINE [2018-11-23 13:03:00,699 INFO L386 AbstractCegarLoop]: Determinization is PREDICATE_ABSTRACTION [2018-11-23 13:03:00,699 INFO L387 AbstractCegarLoop]: Difference is false [2018-11-23 13:03:00,699 INFO L388 AbstractCegarLoop]: Minimize is MINIMIZE_SEVPA [2018-11-23 13:03:00,699 INFO L393 AbstractCegarLoop]: ======== Iteration 0==of CEGAR loop == AllErrorsAtOnce======== [2018-11-23 13:03:00,727 INFO L276 IsEmpty]: Start isEmpty. Operand 46 states. [2018-11-23 13:03:00,733 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 25 [2018-11-23 13:03:00,733 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:00,734 INFO L402 BasicCegarLoop]: trace histogram [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 13:03:00,737 INFO L423 AbstractCegarLoop]: === Iteration 1 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:00,742 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:00,743 INFO L82 PathProgramCache]: Analyzing trace with hash 526401824, now seen corresponding path program 1 times [2018-11-23 13:03:00,745 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:00,746 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:00,795 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:00,795 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:00,795 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:00,852 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:00,939 INFO L256 TraceCheckUtils]: 0: Hoare triple {49#true} call ULTIMATE.init(); {49#true} is VALID [2018-11-23 13:03:00,943 INFO L273 TraceCheckUtils]: 1: Hoare triple {49#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {49#true} is VALID [2018-11-23 13:03:00,943 INFO L273 TraceCheckUtils]: 2: Hoare triple {49#true} assume true; {49#true} is VALID [2018-11-23 13:03:00,944 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {49#true} {49#true} #125#return; {49#true} is VALID [2018-11-23 13:03:00,944 INFO L256 TraceCheckUtils]: 4: Hoare triple {49#true} call #t~ret20 := main(); {49#true} is VALID [2018-11-23 13:03:00,944 INFO L273 TraceCheckUtils]: 5: Hoare triple {49#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {49#true} is VALID [2018-11-23 13:03:00,945 INFO L256 TraceCheckUtils]: 6: Hoare triple {49#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {49#true} is VALID [2018-11-23 13:03:00,945 INFO L273 TraceCheckUtils]: 7: Hoare triple {49#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {49#true} is VALID [2018-11-23 13:03:00,945 INFO L273 TraceCheckUtils]: 8: Hoare triple {49#true} assume !(~str.base == 0 && ~str.offset == 0); {49#true} is VALID [2018-11-23 13:03:00,945 INFO L273 TraceCheckUtils]: 9: Hoare triple {49#true} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {49#true} is VALID [2018-11-23 13:03:00,946 INFO L273 TraceCheckUtils]: 10: Hoare triple {49#true} assume #t~switch3; {49#true} is VALID [2018-11-23 13:03:00,947 INFO L273 TraceCheckUtils]: 11: Hoare triple {49#true} assume !true; {50#false} is VALID [2018-11-23 13:03:00,948 INFO L273 TraceCheckUtils]: 12: Hoare triple {50#false} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {50#false} is VALID [2018-11-23 13:03:00,948 INFO L273 TraceCheckUtils]: 13: Hoare triple {50#false} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {50#false} is VALID [2018-11-23 13:03:00,948 INFO L273 TraceCheckUtils]: 14: Hoare triple {50#false} ~j~0 := ~i~0 - 1; {50#false} is VALID [2018-11-23 13:03:00,948 INFO L273 TraceCheckUtils]: 15: Hoare triple {50#false} assume !true; {50#false} is VALID [2018-11-23 13:03:00,949 INFO L273 TraceCheckUtils]: 16: Hoare triple {50#false} #t~short16 := 0 < ~j~0; {50#false} is VALID [2018-11-23 13:03:00,949 INFO L273 TraceCheckUtils]: 17: Hoare triple {50#false} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {50#false} is VALID [2018-11-23 13:03:00,950 INFO L273 TraceCheckUtils]: 18: Hoare triple {50#false} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {50#false} is VALID [2018-11-23 13:03:00,950 INFO L273 TraceCheckUtils]: 19: Hoare triple {50#false} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {50#false} is VALID [2018-11-23 13:03:00,950 INFO L256 TraceCheckUtils]: 20: Hoare triple {50#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {50#false} is VALID [2018-11-23 13:03:00,951 INFO L273 TraceCheckUtils]: 21: Hoare triple {50#false} ~cond := #in~cond; {50#false} is VALID [2018-11-23 13:03:00,951 INFO L273 TraceCheckUtils]: 22: Hoare triple {50#false} assume 0 == ~cond; {50#false} is VALID [2018-11-23 13:03:00,951 INFO L273 TraceCheckUtils]: 23: Hoare triple {50#false} assume !false; {50#false} is VALID [2018-11-23 13:03:00,956 INFO L134 CoverageAnalysis]: Checked inductivity of 0 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:00,959 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:00,959 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [2] imperfect sequences [] total 2 [2018-11-23 13:03:00,964 INFO L78 Accepts]: Start accepts. Automaton has 2 states. Word has length 24 [2018-11-23 13:03:00,967 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:00,971 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 2 states. [2018-11-23 13:03:01,071 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 24 edges. 24 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:01,071 INFO L459 AbstractCegarLoop]: Interpolant automaton has 2 states [2018-11-23 13:03:01,080 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 2 interpolants. [2018-11-23 13:03:01,081 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=1, Invalid=1, Unknown=0, NotChecked=0, Total=2 [2018-11-23 13:03:01,084 INFO L87 Difference]: Start difference. First operand 46 states. Second operand 2 states. [2018-11-23 13:03:01,485 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:01,486 INFO L93 Difference]: Finished difference Result 83 states and 113 transitions. [2018-11-23 13:03:01,486 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 2 states. [2018-11-23 13:03:01,486 INFO L78 Accepts]: Start accepts. Automaton has 2 states. Word has length 24 [2018-11-23 13:03:01,487 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:01,488 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 2 states. [2018-11-23 13:03:01,502 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 2 states to 2 states and 113 transitions. [2018-11-23 13:03:01,503 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 2 states. [2018-11-23 13:03:01,509 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 2 states to 2 states and 113 transitions. [2018-11-23 13:03:01,510 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 2 states and 113 transitions. [2018-11-23 13:03:02,097 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 13:03:02,121 INFO L225 Difference]: With dead ends: 83 [2018-11-23 13:03:02,121 INFO L226 Difference]: Without dead ends: 38 [2018-11-23 13:03:02,126 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 2 GetRequests, 2 SyntacticMatches, 0 SemanticMatches, 0 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=1, Invalid=1, Unknown=0, NotChecked=0, Total=2 [2018-11-23 13:03:02,148 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 38 states. [2018-11-23 13:03:02,198 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 38 to 38. [2018-11-23 13:03:02,199 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:02,199 INFO L82 GeneralOperation]: Start isEquivalent. First operand 38 states. Second operand 38 states. [2018-11-23 13:03:02,200 INFO L74 IsIncluded]: Start isIncluded. First operand 38 states. Second operand 38 states. [2018-11-23 13:03:02,200 INFO L87 Difference]: Start difference. First operand 38 states. Second operand 38 states. [2018-11-23 13:03:02,204 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:02,205 INFO L93 Difference]: Finished difference Result 38 states and 47 transitions. [2018-11-23 13:03:02,205 INFO L276 IsEmpty]: Start isEmpty. Operand 38 states and 47 transitions. [2018-11-23 13:03:02,206 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:02,206 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:02,206 INFO L74 IsIncluded]: Start isIncluded. First operand 38 states. Second operand 38 states. [2018-11-23 13:03:02,207 INFO L87 Difference]: Start difference. First operand 38 states. Second operand 38 states. [2018-11-23 13:03:02,212 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:02,212 INFO L93 Difference]: Finished difference Result 38 states and 47 transitions. [2018-11-23 13:03:02,212 INFO L276 IsEmpty]: Start isEmpty. Operand 38 states and 47 transitions. [2018-11-23 13:03:02,213 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:02,213 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:02,213 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:02,214 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:02,214 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 38 states. [2018-11-23 13:03:02,217 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 38 states to 38 states and 47 transitions. [2018-11-23 13:03:02,219 INFO L78 Accepts]: Start accepts. Automaton has 38 states and 47 transitions. Word has length 24 [2018-11-23 13:03:02,220 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:02,220 INFO L480 AbstractCegarLoop]: Abstraction has 38 states and 47 transitions. [2018-11-23 13:03:02,220 INFO L481 AbstractCegarLoop]: Interpolant automaton has 2 states. [2018-11-23 13:03:02,220 INFO L276 IsEmpty]: Start isEmpty. Operand 38 states and 47 transitions. [2018-11-23 13:03:02,222 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 29 [2018-11-23 13:03:02,222 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:02,222 INFO L402 BasicCegarLoop]: trace histogram [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 13:03:02,222 INFO L423 AbstractCegarLoop]: === Iteration 2 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:02,223 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:02,223 INFO L82 PathProgramCache]: Analyzing trace with hash 269462985, now seen corresponding path program 1 times [2018-11-23 13:03:02,223 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:02,223 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:02,225 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:02,225 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:02,225 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:02,252 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:02,354 INFO L256 TraceCheckUtils]: 0: Hoare triple {277#true} call ULTIMATE.init(); {277#true} is VALID [2018-11-23 13:03:02,355 INFO L273 TraceCheckUtils]: 1: Hoare triple {277#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {277#true} is VALID [2018-11-23 13:03:02,355 INFO L273 TraceCheckUtils]: 2: Hoare triple {277#true} assume true; {277#true} is VALID [2018-11-23 13:03:02,355 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {277#true} {277#true} #125#return; {277#true} is VALID [2018-11-23 13:03:02,356 INFO L256 TraceCheckUtils]: 4: Hoare triple {277#true} call #t~ret20 := main(); {277#true} is VALID [2018-11-23 13:03:02,356 INFO L273 TraceCheckUtils]: 5: Hoare triple {277#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {277#true} is VALID [2018-11-23 13:03:02,356 INFO L256 TraceCheckUtils]: 6: Hoare triple {277#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {277#true} is VALID [2018-11-23 13:03:02,356 INFO L273 TraceCheckUtils]: 7: Hoare triple {277#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {277#true} is VALID [2018-11-23 13:03:02,357 INFO L273 TraceCheckUtils]: 8: Hoare triple {277#true} assume !(~str.base == 0 && ~str.offset == 0); {277#true} is VALID [2018-11-23 13:03:02,357 INFO L273 TraceCheckUtils]: 9: Hoare triple {277#true} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {277#true} is VALID [2018-11-23 13:03:02,358 INFO L273 TraceCheckUtils]: 10: Hoare triple {277#true} assume #t~switch3; {277#true} is VALID [2018-11-23 13:03:02,358 INFO L273 TraceCheckUtils]: 11: Hoare triple {277#true} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {277#true} is VALID [2018-11-23 13:03:02,358 INFO L273 TraceCheckUtils]: 12: Hoare triple {277#true} assume #t~short6; {279#|parse_expression_list_#t~short6|} is VALID [2018-11-23 13:03:02,363 INFO L273 TraceCheckUtils]: 13: Hoare triple {279#|parse_expression_list_#t~short6|} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {278#false} is VALID [2018-11-23 13:03:02,363 INFO L273 TraceCheckUtils]: 14: Hoare triple {278#false} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {278#false} is VALID [2018-11-23 13:03:02,364 INFO L273 TraceCheckUtils]: 15: Hoare triple {278#false} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {278#false} is VALID [2018-11-23 13:03:02,364 INFO L273 TraceCheckUtils]: 16: Hoare triple {278#false} ~j~0 := ~i~0 - 1; {278#false} is VALID [2018-11-23 13:03:02,364 INFO L273 TraceCheckUtils]: 17: Hoare triple {278#false} #t~short13 := 0 < ~j~0; {278#false} is VALID [2018-11-23 13:03:02,364 INFO L273 TraceCheckUtils]: 18: Hoare triple {278#false} assume !#t~short13; {278#false} is VALID [2018-11-23 13:03:02,365 INFO L273 TraceCheckUtils]: 19: Hoare triple {278#false} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {278#false} is VALID [2018-11-23 13:03:02,365 INFO L273 TraceCheckUtils]: 20: Hoare triple {278#false} #t~short16 := 0 < ~j~0; {278#false} is VALID [2018-11-23 13:03:02,365 INFO L273 TraceCheckUtils]: 21: Hoare triple {278#false} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {278#false} is VALID [2018-11-23 13:03:02,365 INFO L273 TraceCheckUtils]: 22: Hoare triple {278#false} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {278#false} is VALID [2018-11-23 13:03:02,366 INFO L273 TraceCheckUtils]: 23: Hoare triple {278#false} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {278#false} is VALID [2018-11-23 13:03:02,366 INFO L256 TraceCheckUtils]: 24: Hoare triple {278#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {278#false} is VALID [2018-11-23 13:03:02,366 INFO L273 TraceCheckUtils]: 25: Hoare triple {278#false} ~cond := #in~cond; {278#false} is VALID [2018-11-23 13:03:02,367 INFO L273 TraceCheckUtils]: 26: Hoare triple {278#false} assume 0 == ~cond; {278#false} is VALID [2018-11-23 13:03:02,367 INFO L273 TraceCheckUtils]: 27: Hoare triple {278#false} assume !false; {278#false} is VALID [2018-11-23 13:03:02,369 INFO L134 CoverageAnalysis]: Checked inductivity of 0 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:02,369 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:02,370 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [3] imperfect sequences [] total 3 [2018-11-23 13:03:02,371 INFO L78 Accepts]: Start accepts. Automaton has 3 states. Word has length 28 [2018-11-23 13:03:02,372 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:02,372 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 3 states. [2018-11-23 13:03:02,437 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 28 edges. 28 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:02,438 INFO L459 AbstractCegarLoop]: Interpolant automaton has 3 states [2018-11-23 13:03:02,438 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 3 interpolants. [2018-11-23 13:03:02,438 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=3, Invalid=3, Unknown=0, NotChecked=0, Total=6 [2018-11-23 13:03:02,438 INFO L87 Difference]: Start difference. First operand 38 states and 47 transitions. Second operand 3 states. [2018-11-23 13:03:02,747 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:02,748 INFO L93 Difference]: Finished difference Result 68 states and 87 transitions. [2018-11-23 13:03:02,748 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 3 states. [2018-11-23 13:03:02,748 INFO L78 Accepts]: Start accepts. Automaton has 3 states. Word has length 28 [2018-11-23 13:03:02,748 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:02,749 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 3 states. [2018-11-23 13:03:02,753 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 3 states to 3 states and 87 transitions. [2018-11-23 13:03:02,753 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 3 states. [2018-11-23 13:03:02,757 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 3 states to 3 states and 87 transitions. [2018-11-23 13:03:02,759 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 3 states and 87 transitions. [2018-11-23 13:03:02,990 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 13:03:02,992 INFO L225 Difference]: With dead ends: 68 [2018-11-23 13:03:02,992 INFO L226 Difference]: Without dead ends: 39 [2018-11-23 13:03:02,995 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 3 GetRequests, 2 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 13:03:02,995 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 39 states. [2018-11-23 13:03:03,009 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 39 to 39. [2018-11-23 13:03:03,009 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:03,010 INFO L82 GeneralOperation]: Start isEquivalent. First operand 39 states. Second operand 39 states. [2018-11-23 13:03:03,010 INFO L74 IsIncluded]: Start isIncluded. First operand 39 states. Second operand 39 states. [2018-11-23 13:03:03,010 INFO L87 Difference]: Start difference. First operand 39 states. Second operand 39 states. [2018-11-23 13:03:03,013 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:03,014 INFO L93 Difference]: Finished difference Result 39 states and 48 transitions. [2018-11-23 13:03:03,014 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 48 transitions. [2018-11-23 13:03:03,014 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:03,015 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:03,015 INFO L74 IsIncluded]: Start isIncluded. First operand 39 states. Second operand 39 states. [2018-11-23 13:03:03,015 INFO L87 Difference]: Start difference. First operand 39 states. Second operand 39 states. [2018-11-23 13:03:03,018 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:03,018 INFO L93 Difference]: Finished difference Result 39 states and 48 transitions. [2018-11-23 13:03:03,018 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 48 transitions. [2018-11-23 13:03:03,019 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:03,019 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:03,019 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:03,020 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:03,020 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 39 states. [2018-11-23 13:03:03,022 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 39 states to 39 states and 48 transitions. [2018-11-23 13:03:03,023 INFO L78 Accepts]: Start accepts. Automaton has 39 states and 48 transitions. Word has length 28 [2018-11-23 13:03:03,023 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:03,023 INFO L480 AbstractCegarLoop]: Abstraction has 39 states and 48 transitions. [2018-11-23 13:03:03,023 INFO L481 AbstractCegarLoop]: Interpolant automaton has 3 states. [2018-11-23 13:03:03,023 INFO L276 IsEmpty]: Start isEmpty. Operand 39 states and 48 transitions. [2018-11-23 13:03:03,024 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 29 [2018-11-23 13:03:03,025 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:03,025 INFO L402 BasicCegarLoop]: trace histogram [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 13:03:03,025 INFO L423 AbstractCegarLoop]: === Iteration 3 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:03,025 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:03,026 INFO L82 PathProgramCache]: Analyzing trace with hash -751605369, now seen corresponding path program 1 times [2018-11-23 13:03:03,026 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:03,026 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:03,027 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:03,027 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:03,027 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:03,049 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:03,183 INFO L256 TraceCheckUtils]: 0: Hoare triple {494#true} call ULTIMATE.init(); {494#true} is VALID [2018-11-23 13:03:03,183 INFO L273 TraceCheckUtils]: 1: Hoare triple {494#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {494#true} is VALID [2018-11-23 13:03:03,184 INFO L273 TraceCheckUtils]: 2: Hoare triple {494#true} assume true; {494#true} is VALID [2018-11-23 13:03:03,184 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {494#true} {494#true} #125#return; {494#true} is VALID [2018-11-23 13:03:03,185 INFO L256 TraceCheckUtils]: 4: Hoare triple {494#true} call #t~ret20 := main(); {494#true} is VALID [2018-11-23 13:03:03,185 INFO L273 TraceCheckUtils]: 5: Hoare triple {494#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {494#true} is VALID [2018-11-23 13:03:03,185 INFO L256 TraceCheckUtils]: 6: Hoare triple {494#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {494#true} is VALID [2018-11-23 13:03:03,185 INFO L273 TraceCheckUtils]: 7: Hoare triple {494#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {494#true} is VALID [2018-11-23 13:03:03,186 INFO L273 TraceCheckUtils]: 8: Hoare triple {494#true} assume !(~str.base == 0 && ~str.offset == 0); {494#true} is VALID [2018-11-23 13:03:03,186 INFO L273 TraceCheckUtils]: 9: Hoare triple {494#true} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {494#true} is VALID [2018-11-23 13:03:03,186 INFO L273 TraceCheckUtils]: 10: Hoare triple {494#true} assume #t~switch3; {494#true} is VALID [2018-11-23 13:03:03,186 INFO L273 TraceCheckUtils]: 11: Hoare triple {494#true} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {494#true} is VALID [2018-11-23 13:03:03,187 INFO L273 TraceCheckUtils]: 12: Hoare triple {494#true} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {494#true} is VALID [2018-11-23 13:03:03,187 INFO L273 TraceCheckUtils]: 13: Hoare triple {494#true} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {494#true} is VALID [2018-11-23 13:03:03,187 INFO L273 TraceCheckUtils]: 14: Hoare triple {494#true} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {494#true} is VALID [2018-11-23 13:03:03,188 INFO L273 TraceCheckUtils]: 15: Hoare triple {494#true} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {494#true} is VALID [2018-11-23 13:03:03,188 INFO L273 TraceCheckUtils]: 16: Hoare triple {494#true} ~j~0 := ~i~0 - 1; {494#true} is VALID [2018-11-23 13:03:03,190 INFO L273 TraceCheckUtils]: 17: Hoare triple {494#true} #t~short13 := 0 < ~j~0; {496#(or |parse_expression_list_#t~short13| (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:03,190 INFO L273 TraceCheckUtils]: 18: Hoare triple {496#(or |parse_expression_list_#t~short13| (<= parse_expression_list_~j~0 0))} assume !#t~short13; {497#(<= parse_expression_list_~j~0 0)} is VALID [2018-11-23 13:03:03,192 INFO L273 TraceCheckUtils]: 19: Hoare triple {497#(<= parse_expression_list_~j~0 0)} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {497#(<= parse_expression_list_~j~0 0)} is VALID [2018-11-23 13:03:03,192 INFO L273 TraceCheckUtils]: 20: Hoare triple {497#(<= parse_expression_list_~j~0 0)} #t~short16 := 0 < ~j~0; {498#(not |parse_expression_list_#t~short16|)} is VALID [2018-11-23 13:03:03,194 INFO L273 TraceCheckUtils]: 21: Hoare triple {498#(not |parse_expression_list_#t~short16|)} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {495#false} is VALID [2018-11-23 13:03:03,194 INFO L273 TraceCheckUtils]: 22: Hoare triple {495#false} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {495#false} is VALID [2018-11-23 13:03:03,194 INFO L273 TraceCheckUtils]: 23: Hoare triple {495#false} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {495#false} is VALID [2018-11-23 13:03:03,194 INFO L256 TraceCheckUtils]: 24: Hoare triple {495#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {495#false} is VALID [2018-11-23 13:03:03,195 INFO L273 TraceCheckUtils]: 25: Hoare triple {495#false} ~cond := #in~cond; {495#false} is VALID [2018-11-23 13:03:03,195 INFO L273 TraceCheckUtils]: 26: Hoare triple {495#false} assume 0 == ~cond; {495#false} is VALID [2018-11-23 13:03:03,195 INFO L273 TraceCheckUtils]: 27: Hoare triple {495#false} assume !false; {495#false} is VALID [2018-11-23 13:03:03,197 INFO L134 CoverageAnalysis]: Checked inductivity of 0 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:03,197 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:03,197 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [5] imperfect sequences [] total 5 [2018-11-23 13:03:03,198 INFO L78 Accepts]: Start accepts. Automaton has 5 states. Word has length 28 [2018-11-23 13:03:03,198 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:03,198 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 5 states. [2018-11-23 13:03:03,300 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 28 edges. 28 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:03,301 INFO L459 AbstractCegarLoop]: Interpolant automaton has 5 states [2018-11-23 13:03:03,301 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 5 interpolants. [2018-11-23 13:03:03,301 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=8, Invalid=12, Unknown=0, NotChecked=0, Total=20 [2018-11-23 13:03:03,301 INFO L87 Difference]: Start difference. First operand 39 states and 48 transitions. Second operand 5 states. [2018-11-23 13:03:03,702 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:03,702 INFO L93 Difference]: Finished difference Result 94 states and 123 transitions. [2018-11-23 13:03:03,702 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 6 states. [2018-11-23 13:03:03,703 INFO L78 Accepts]: Start accepts. Automaton has 5 states. Word has length 28 [2018-11-23 13:03:03,703 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:03,703 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 5 states. [2018-11-23 13:03:03,707 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 6 states to 6 states and 120 transitions. [2018-11-23 13:03:03,707 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 5 states. [2018-11-23 13:03:03,710 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 6 states to 6 states and 120 transitions. [2018-11-23 13:03:03,710 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 6 states and 120 transitions. [2018-11-23 13:03:03,883 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 120 edges. 120 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:03,887 INFO L225 Difference]: With dead ends: 94 [2018-11-23 13:03:03,890 INFO L226 Difference]: Without dead ends: 64 [2018-11-23 13:03:03,891 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 6 GetRequests, 2 SyntacticMatches, 0 SemanticMatches, 4 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 1 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=13, Invalid=17, Unknown=0, NotChecked=0, Total=30 [2018-11-23 13:03:03,891 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 64 states. [2018-11-23 13:03:03,925 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 64 to 47. [2018-11-23 13:03:03,925 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:03,925 INFO L82 GeneralOperation]: Start isEquivalent. First operand 64 states. Second operand 47 states. [2018-11-23 13:03:03,925 INFO L74 IsIncluded]: Start isIncluded. First operand 64 states. Second operand 47 states. [2018-11-23 13:03:03,925 INFO L87 Difference]: Start difference. First operand 64 states. Second operand 47 states. [2018-11-23 13:03:03,930 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:03,930 INFO L93 Difference]: Finished difference Result 64 states and 81 transitions. [2018-11-23 13:03:03,931 INFO L276 IsEmpty]: Start isEmpty. Operand 64 states and 81 transitions. [2018-11-23 13:03:03,932 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:03,932 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:03,932 INFO L74 IsIncluded]: Start isIncluded. First operand 47 states. Second operand 64 states. [2018-11-23 13:03:03,932 INFO L87 Difference]: Start difference. First operand 47 states. Second operand 64 states. [2018-11-23 13:03:03,938 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:03,938 INFO L93 Difference]: Finished difference Result 64 states and 81 transitions. [2018-11-23 13:03:03,938 INFO L276 IsEmpty]: Start isEmpty. Operand 64 states and 81 transitions. [2018-11-23 13:03:03,939 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:03,939 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:03,939 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:03,940 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:03,940 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 47 states. [2018-11-23 13:03:03,942 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 47 states to 47 states and 59 transitions. [2018-11-23 13:03:03,942 INFO L78 Accepts]: Start accepts. Automaton has 47 states and 59 transitions. Word has length 28 [2018-11-23 13:03:03,943 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:03,943 INFO L480 AbstractCegarLoop]: Abstraction has 47 states and 59 transitions. [2018-11-23 13:03:03,943 INFO L481 AbstractCegarLoop]: Interpolant automaton has 5 states. [2018-11-23 13:03:03,943 INFO L276 IsEmpty]: Start isEmpty. Operand 47 states and 59 transitions. [2018-11-23 13:03:03,944 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 29 [2018-11-23 13:03:03,944 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:03,944 INFO L402 BasicCegarLoop]: trace histogram [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 13:03:03,944 INFO L423 AbstractCegarLoop]: === Iteration 4 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:03,945 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:03,945 INFO L82 PathProgramCache]: Analyzing trace with hash 1080660295, now seen corresponding path program 1 times [2018-11-23 13:03:03,945 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:03,945 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:03,946 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:03,946 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:03,946 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:03,968 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:04,163 INFO L256 TraceCheckUtils]: 0: Hoare triple {804#true} call ULTIMATE.init(); {804#true} is VALID [2018-11-23 13:03:04,164 INFO L273 TraceCheckUtils]: 1: Hoare triple {804#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {804#true} is VALID [2018-11-23 13:03:04,164 INFO L273 TraceCheckUtils]: 2: Hoare triple {804#true} assume true; {804#true} is VALID [2018-11-23 13:03:04,164 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {804#true} {804#true} #125#return; {804#true} is VALID [2018-11-23 13:03:04,164 INFO L256 TraceCheckUtils]: 4: Hoare triple {804#true} call #t~ret20 := main(); {804#true} is VALID [2018-11-23 13:03:04,165 INFO L273 TraceCheckUtils]: 5: Hoare triple {804#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {804#true} is VALID [2018-11-23 13:03:04,165 INFO L256 TraceCheckUtils]: 6: Hoare triple {804#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {804#true} is VALID [2018-11-23 13:03:04,166 INFO L273 TraceCheckUtils]: 7: Hoare triple {804#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {806#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,169 INFO L273 TraceCheckUtils]: 8: Hoare triple {806#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} assume !(~str.base == 0 && ~str.offset == 0); {806#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,170 INFO L273 TraceCheckUtils]: 9: Hoare triple {806#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,171 INFO L273 TraceCheckUtils]: 10: Hoare triple {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume #t~switch3; {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,172 INFO L273 TraceCheckUtils]: 11: Hoare triple {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,174 INFO L273 TraceCheckUtils]: 12: Hoare triple {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,176 INFO L273 TraceCheckUtils]: 13: Hoare triple {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,177 INFO L273 TraceCheckUtils]: 14: Hoare triple {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:04,178 INFO L273 TraceCheckUtils]: 15: Hoare triple {807#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {808#(<= (+ parse_expression_list_~i~0 1) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,179 INFO L273 TraceCheckUtils]: 16: Hoare triple {808#(<= (+ parse_expression_list_~i~0 1) parse_expression_list_~start~0)} ~j~0 := ~i~0 - 1; {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,180 INFO L273 TraceCheckUtils]: 17: Hoare triple {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} #t~short13 := 0 < ~j~0; {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,180 INFO L273 TraceCheckUtils]: 18: Hoare triple {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} assume !#t~short13; {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,181 INFO L273 TraceCheckUtils]: 19: Hoare triple {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,182 INFO L273 TraceCheckUtils]: 20: Hoare triple {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} #t~short16 := 0 < ~j~0; {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,190 INFO L273 TraceCheckUtils]: 21: Hoare triple {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} assume !#t~short16; {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,190 INFO L273 TraceCheckUtils]: 22: Hoare triple {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} assume !#t~short16;havoc #t~mem15;havoc #t~short16; {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:04,191 INFO L273 TraceCheckUtils]: 23: Hoare triple {809#(<= (+ parse_expression_list_~j~0 2) parse_expression_list_~start~0)} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {805#false} is VALID [2018-11-23 13:03:04,191 INFO L256 TraceCheckUtils]: 24: Hoare triple {805#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {805#false} is VALID [2018-11-23 13:03:04,192 INFO L273 TraceCheckUtils]: 25: Hoare triple {805#false} ~cond := #in~cond; {805#false} is VALID [2018-11-23 13:03:04,192 INFO L273 TraceCheckUtils]: 26: Hoare triple {805#false} assume 0 == ~cond; {805#false} is VALID [2018-11-23 13:03:04,192 INFO L273 TraceCheckUtils]: 27: Hoare triple {805#false} assume !false; {805#false} is VALID [2018-11-23 13:03:04,195 INFO L134 CoverageAnalysis]: Checked inductivity of 0 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:04,195 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:04,195 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [6] imperfect sequences [] total 6 [2018-11-23 13:03:04,196 INFO L78 Accepts]: Start accepts. Automaton has 6 states. Word has length 28 [2018-11-23 13:03:04,196 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:04,196 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 6 states. [2018-11-23 13:03:04,235 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 28 edges. 28 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:04,235 INFO L459 AbstractCegarLoop]: Interpolant automaton has 6 states [2018-11-23 13:03:04,235 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 6 interpolants. [2018-11-23 13:03:04,236 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=11, Invalid=19, Unknown=0, NotChecked=0, Total=30 [2018-11-23 13:03:04,236 INFO L87 Difference]: Start difference. First operand 47 states and 59 transitions. Second operand 6 states. [2018-11-23 13:03:04,936 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:04,936 INFO L93 Difference]: Finished difference Result 146 states and 194 transitions. [2018-11-23 13:03:04,936 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 6 states. [2018-11-23 13:03:04,936 INFO L78 Accepts]: Start accepts. Automaton has 6 states. Word has length 28 [2018-11-23 13:03:04,937 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:04,937 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 6 states. [2018-11-23 13:03:04,940 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 6 states to 6 states and 146 transitions. [2018-11-23 13:03:04,941 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 6 states. [2018-11-23 13:03:04,944 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 6 states to 6 states and 146 transitions. [2018-11-23 13:03:04,944 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 6 states and 146 transitions. [2018-11-23 13:03:05,155 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 146 edges. 146 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:05,159 INFO L225 Difference]: With dead ends: 146 [2018-11-23 13:03:05,159 INFO L226 Difference]: Without dead ends: 83 [2018-11-23 13:03:05,160 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 7 GetRequests, 2 SyntacticMatches, 0 SemanticMatches, 5 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 2 ImplicationChecksByTransitivity, 0.1s TimeCoverageRelationStatistics Valid=15, Invalid=27, Unknown=0, NotChecked=0, Total=42 [2018-11-23 13:03:05,161 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 83 states. [2018-11-23 13:03:05,192 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 83 to 54. [2018-11-23 13:03:05,192 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:05,192 INFO L82 GeneralOperation]: Start isEquivalent. First operand 83 states. Second operand 54 states. [2018-11-23 13:03:05,192 INFO L74 IsIncluded]: Start isIncluded. First operand 83 states. Second operand 54 states. [2018-11-23 13:03:05,193 INFO L87 Difference]: Start difference. First operand 83 states. Second operand 54 states. [2018-11-23 13:03:05,198 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:05,198 INFO L93 Difference]: Finished difference Result 83 states and 105 transitions. [2018-11-23 13:03:05,198 INFO L276 IsEmpty]: Start isEmpty. Operand 83 states and 105 transitions. [2018-11-23 13:03:05,199 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:05,199 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:05,199 INFO L74 IsIncluded]: Start isIncluded. First operand 54 states. Second operand 83 states. [2018-11-23 13:03:05,200 INFO L87 Difference]: Start difference. First operand 54 states. Second operand 83 states. [2018-11-23 13:03:05,204 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:05,204 INFO L93 Difference]: Finished difference Result 83 states and 105 transitions. [2018-11-23 13:03:05,205 INFO L276 IsEmpty]: Start isEmpty. Operand 83 states and 105 transitions. [2018-11-23 13:03:05,205 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:05,206 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:05,206 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:05,206 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:05,206 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 54 states. [2018-11-23 13:03:05,209 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 54 states to 54 states and 67 transitions. [2018-11-23 13:03:05,209 INFO L78 Accepts]: Start accepts. Automaton has 54 states and 67 transitions. Word has length 28 [2018-11-23 13:03:05,209 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:05,209 INFO L480 AbstractCegarLoop]: Abstraction has 54 states and 67 transitions. [2018-11-23 13:03:05,210 INFO L481 AbstractCegarLoop]: Interpolant automaton has 6 states. [2018-11-23 13:03:05,210 INFO L276 IsEmpty]: Start isEmpty. Operand 54 states and 67 transitions. [2018-11-23 13:03:05,211 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 29 [2018-11-23 13:03:05,211 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:05,211 INFO L402 BasicCegarLoop]: trace histogram [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 13:03:05,211 INFO L423 AbstractCegarLoop]: === Iteration 5 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:05,212 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:05,212 INFO L82 PathProgramCache]: Analyzing trace with hash 493854281, now seen corresponding path program 1 times [2018-11-23 13:03:05,212 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:05,212 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:05,213 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:05,213 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:05,214 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:05,230 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:05,422 INFO L256 TraceCheckUtils]: 0: Hoare triple {1222#true} call ULTIMATE.init(); {1222#true} is VALID [2018-11-23 13:03:05,423 INFO L273 TraceCheckUtils]: 1: Hoare triple {1222#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {1222#true} is VALID [2018-11-23 13:03:05,423 INFO L273 TraceCheckUtils]: 2: Hoare triple {1222#true} assume true; {1222#true} is VALID [2018-11-23 13:03:05,423 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {1222#true} {1222#true} #125#return; {1222#true} is VALID [2018-11-23 13:03:05,423 INFO L256 TraceCheckUtils]: 4: Hoare triple {1222#true} call #t~ret20 := main(); {1222#true} is VALID [2018-11-23 13:03:05,424 INFO L273 TraceCheckUtils]: 5: Hoare triple {1222#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {1222#true} is VALID [2018-11-23 13:03:05,424 INFO L256 TraceCheckUtils]: 6: Hoare triple {1222#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {1222#true} is VALID [2018-11-23 13:03:05,425 INFO L273 TraceCheckUtils]: 7: Hoare triple {1222#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {1224#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,426 INFO L273 TraceCheckUtils]: 8: Hoare triple {1224#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} assume !(~str.base == 0 && ~str.offset == 0); {1224#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,427 INFO L273 TraceCheckUtils]: 9: Hoare triple {1224#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,428 INFO L273 TraceCheckUtils]: 10: Hoare triple {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume #t~switch3; {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,428 INFO L273 TraceCheckUtils]: 11: Hoare triple {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,429 INFO L273 TraceCheckUtils]: 12: Hoare triple {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,445 INFO L273 TraceCheckUtils]: 13: Hoare triple {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,447 INFO L273 TraceCheckUtils]: 14: Hoare triple {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,450 INFO L273 TraceCheckUtils]: 15: Hoare triple {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !(34 == #t~mem8);havoc #t~mem8; {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,451 INFO L273 TraceCheckUtils]: 16: Hoare triple {1225#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} ~j~0 := ~i~0 - 1; {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,452 INFO L273 TraceCheckUtils]: 17: Hoare triple {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} #t~short13 := 0 < ~j~0; {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,453 INFO L273 TraceCheckUtils]: 18: Hoare triple {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} assume !#t~short13; {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,454 INFO L273 TraceCheckUtils]: 19: Hoare triple {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,457 INFO L273 TraceCheckUtils]: 20: Hoare triple {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} #t~short16 := 0 < ~j~0; {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,458 INFO L273 TraceCheckUtils]: 21: Hoare triple {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} assume !#t~short16; {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,458 INFO L273 TraceCheckUtils]: 22: Hoare triple {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} assume !#t~short16;havoc #t~mem15;havoc #t~short16; {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:05,459 INFO L273 TraceCheckUtils]: 23: Hoare triple {1226#(and (<= (+ parse_expression_list_~j~0 1) 0) (= parse_expression_list_~start~0 0))} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {1223#false} is VALID [2018-11-23 13:03:05,459 INFO L256 TraceCheckUtils]: 24: Hoare triple {1223#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {1223#false} is VALID [2018-11-23 13:03:05,459 INFO L273 TraceCheckUtils]: 25: Hoare triple {1223#false} ~cond := #in~cond; {1223#false} is VALID [2018-11-23 13:03:05,460 INFO L273 TraceCheckUtils]: 26: Hoare triple {1223#false} assume 0 == ~cond; {1223#false} is VALID [2018-11-23 13:03:05,460 INFO L273 TraceCheckUtils]: 27: Hoare triple {1223#false} assume !false; {1223#false} is VALID [2018-11-23 13:03:05,463 INFO L134 CoverageAnalysis]: Checked inductivity of 0 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:05,464 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:05,464 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [5] imperfect sequences [] total 5 [2018-11-23 13:03:05,465 INFO L78 Accepts]: Start accepts. Automaton has 5 states. Word has length 28 [2018-11-23 13:03:05,465 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:05,465 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 5 states. [2018-11-23 13:03:05,520 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 28 edges. 28 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:05,521 INFO L459 AbstractCegarLoop]: Interpolant automaton has 5 states [2018-11-23 13:03:05,521 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 5 interpolants. [2018-11-23 13:03:05,521 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=8, Invalid=12, Unknown=0, NotChecked=0, Total=20 [2018-11-23 13:03:05,522 INFO L87 Difference]: Start difference. First operand 54 states and 67 transitions. Second operand 5 states. [2018-11-23 13:03:06,187 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:06,188 INFO L93 Difference]: Finished difference Result 126 states and 163 transitions. [2018-11-23 13:03:06,188 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 5 states. [2018-11-23 13:03:06,188 INFO L78 Accepts]: Start accepts. Automaton has 5 states. Word has length 28 [2018-11-23 13:03:06,188 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:06,189 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 5 states. [2018-11-23 13:03:06,191 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 5 states to 5 states and 127 transitions. [2018-11-23 13:03:06,192 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 5 states. [2018-11-23 13:03:06,195 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 5 states to 5 states and 127 transitions. [2018-11-23 13:03:06,195 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 5 states and 127 transitions. [2018-11-23 13:03:06,407 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 127 edges. 127 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:06,410 INFO L225 Difference]: With dead ends: 126 [2018-11-23 13:03:06,410 INFO L226 Difference]: Without dead ends: 65 [2018-11-23 13:03:06,411 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 8 GetRequests, 2 SyntacticMatches, 1 SemanticMatches, 5 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 2 ImplicationChecksByTransitivity, 0.1s TimeCoverageRelationStatistics Valid=18, Invalid=24, Unknown=0, NotChecked=0, Total=42 [2018-11-23 13:03:06,411 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 65 states. [2018-11-23 13:03:06,437 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 65 to 49. [2018-11-23 13:03:06,437 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:06,437 INFO L82 GeneralOperation]: Start isEquivalent. First operand 65 states. Second operand 49 states. [2018-11-23 13:03:06,438 INFO L74 IsIncluded]: Start isIncluded. First operand 65 states. Second operand 49 states. [2018-11-23 13:03:06,438 INFO L87 Difference]: Start difference. First operand 65 states. Second operand 49 states. [2018-11-23 13:03:06,440 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:06,441 INFO L93 Difference]: Finished difference Result 65 states and 81 transitions. [2018-11-23 13:03:06,441 INFO L276 IsEmpty]: Start isEmpty. Operand 65 states and 81 transitions. [2018-11-23 13:03:06,441 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:06,442 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:06,442 INFO L74 IsIncluded]: Start isIncluded. First operand 49 states. Second operand 65 states. [2018-11-23 13:03:06,442 INFO L87 Difference]: Start difference. First operand 49 states. Second operand 65 states. [2018-11-23 13:03:06,445 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:06,445 INFO L93 Difference]: Finished difference Result 65 states and 81 transitions. [2018-11-23 13:03:06,446 INFO L276 IsEmpty]: Start isEmpty. Operand 65 states and 81 transitions. [2018-11-23 13:03:06,446 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:06,446 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:06,446 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:06,447 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:06,447 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 49 states. [2018-11-23 13:03:06,449 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 49 states to 49 states and 61 transitions. [2018-11-23 13:03:06,449 INFO L78 Accepts]: Start accepts. Automaton has 49 states and 61 transitions. Word has length 28 [2018-11-23 13:03:06,449 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:06,449 INFO L480 AbstractCegarLoop]: Abstraction has 49 states and 61 transitions. [2018-11-23 13:03:06,450 INFO L481 AbstractCegarLoop]: Interpolant automaton has 5 states. [2018-11-23 13:03:06,450 INFO L276 IsEmpty]: Start isEmpty. Operand 49 states and 61 transitions. [2018-11-23 13:03:06,450 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 34 [2018-11-23 13:03:06,451 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:06,451 INFO L402 BasicCegarLoop]: trace histogram [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, 1, 1, 1] [2018-11-23 13:03:06,451 INFO L423 AbstractCegarLoop]: === Iteration 6 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:06,451 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:06,452 INFO L82 PathProgramCache]: Analyzing trace with hash 2145597124, now seen corresponding path program 1 times [2018-11-23 13:03:06,452 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:06,452 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:06,453 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:06,453 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:06,453 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:06,470 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:06,633 INFO L256 TraceCheckUtils]: 0: Hoare triple {1576#true} call ULTIMATE.init(); {1576#true} is VALID [2018-11-23 13:03:06,633 INFO L273 TraceCheckUtils]: 1: Hoare triple {1576#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {1576#true} is VALID [2018-11-23 13:03:06,634 INFO L273 TraceCheckUtils]: 2: Hoare triple {1576#true} assume true; {1576#true} is VALID [2018-11-23 13:03:06,634 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {1576#true} {1576#true} #125#return; {1576#true} is VALID [2018-11-23 13:03:06,634 INFO L256 TraceCheckUtils]: 4: Hoare triple {1576#true} call #t~ret20 := main(); {1576#true} is VALID [2018-11-23 13:03:06,635 INFO L273 TraceCheckUtils]: 5: Hoare triple {1576#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {1576#true} is VALID [2018-11-23 13:03:06,635 INFO L256 TraceCheckUtils]: 6: Hoare triple {1576#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {1576#true} is VALID [2018-11-23 13:03:06,639 INFO L273 TraceCheckUtils]: 7: Hoare triple {1576#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,639 INFO L273 TraceCheckUtils]: 8: Hoare triple {1578#(= parse_expression_list_~start~0 0)} assume !(~str.base == 0 && ~str.offset == 0); {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,640 INFO L273 TraceCheckUtils]: 9: Hoare triple {1578#(= parse_expression_list_~start~0 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,640 INFO L273 TraceCheckUtils]: 10: Hoare triple {1578#(= parse_expression_list_~start~0 0)} assume !#t~switch3; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,641 INFO L273 TraceCheckUtils]: 11: Hoare triple {1578#(= parse_expression_list_~start~0 0)} havoc #t~switch3;havoc #t~mem2; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,641 INFO L273 TraceCheckUtils]: 12: Hoare triple {1578#(= parse_expression_list_~start~0 0)} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,642 INFO L273 TraceCheckUtils]: 13: Hoare triple {1578#(= parse_expression_list_~start~0 0)} assume !!(0 != #t~mem0);havoc #t~mem0; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,642 INFO L273 TraceCheckUtils]: 14: Hoare triple {1578#(= parse_expression_list_~start~0 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,643 INFO L273 TraceCheckUtils]: 15: Hoare triple {1578#(= parse_expression_list_~start~0 0)} assume #t~switch3; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,647 INFO L273 TraceCheckUtils]: 16: Hoare triple {1578#(= parse_expression_list_~start~0 0)} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,649 INFO L273 TraceCheckUtils]: 17: Hoare triple {1578#(= parse_expression_list_~start~0 0)} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,649 INFO L273 TraceCheckUtils]: 18: Hoare triple {1578#(= parse_expression_list_~start~0 0)} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,650 INFO L273 TraceCheckUtils]: 19: Hoare triple {1578#(= parse_expression_list_~start~0 0)} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {1578#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:06,651 INFO L273 TraceCheckUtils]: 20: Hoare triple {1578#(= parse_expression_list_~start~0 0)} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {1579#(<= 1 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:06,651 INFO L273 TraceCheckUtils]: 21: Hoare triple {1579#(<= 1 parse_expression_list_~start~0)} ~j~0 := ~i~0 - 1; {1579#(<= 1 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:06,652 INFO L273 TraceCheckUtils]: 22: Hoare triple {1579#(<= 1 parse_expression_list_~start~0)} #t~short13 := 0 < ~j~0; {1580#(and (or (< 0 parse_expression_list_~j~0) (<= 1 parse_expression_list_~start~0)) (or |parse_expression_list_#t~short13| (<= parse_expression_list_~j~0 0)))} is VALID [2018-11-23 13:03:06,652 INFO L273 TraceCheckUtils]: 23: Hoare triple {1580#(and (or (< 0 parse_expression_list_~j~0) (<= 1 parse_expression_list_~start~0)) (or |parse_expression_list_#t~short13| (<= parse_expression_list_~j~0 0)))} assume !#t~short13; {1581#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:06,653 INFO L273 TraceCheckUtils]: 24: Hoare triple {1581#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {1581#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:06,654 INFO L273 TraceCheckUtils]: 25: Hoare triple {1581#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} #t~short16 := 0 < ~j~0; {1582#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:06,654 INFO L273 TraceCheckUtils]: 26: Hoare triple {1582#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} assume !#t~short16; {1582#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:06,655 INFO L273 TraceCheckUtils]: 27: Hoare triple {1582#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} assume !#t~short16;havoc #t~mem15;havoc #t~short16; {1582#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:06,656 INFO L273 TraceCheckUtils]: 28: Hoare triple {1582#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {1577#false} is VALID [2018-11-23 13:03:06,656 INFO L256 TraceCheckUtils]: 29: Hoare triple {1577#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {1577#false} is VALID [2018-11-23 13:03:06,657 INFO L273 TraceCheckUtils]: 30: Hoare triple {1577#false} ~cond := #in~cond; {1577#false} is VALID [2018-11-23 13:03:06,657 INFO L273 TraceCheckUtils]: 31: Hoare triple {1577#false} assume 0 == ~cond; {1577#false} is VALID [2018-11-23 13:03:06,657 INFO L273 TraceCheckUtils]: 32: Hoare triple {1577#false} assume !false; {1577#false} is VALID [2018-11-23 13:03:06,660 INFO L134 CoverageAnalysis]: Checked inductivity of 2 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 2 trivial. 0 not checked. [2018-11-23 13:03:06,661 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:06,661 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [7] imperfect sequences [] total 7 [2018-11-23 13:03:06,661 INFO L78 Accepts]: Start accepts. Automaton has 7 states. Word has length 33 [2018-11-23 13:03:06,662 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:06,662 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 7 states. [2018-11-23 13:03:06,716 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 32 edges. 32 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:06,716 INFO L459 AbstractCegarLoop]: Interpolant automaton has 7 states [2018-11-23 13:03:06,716 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 7 interpolants. [2018-11-23 13:03:06,716 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=14, Invalid=28, Unknown=0, NotChecked=0, Total=42 [2018-11-23 13:03:06,717 INFO L87 Difference]: Start difference. First operand 49 states and 61 transitions. Second operand 7 states. [2018-11-23 13:03:07,640 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:07,640 INFO L93 Difference]: Finished difference Result 148 states and 197 transitions. [2018-11-23 13:03:07,641 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 7 states. [2018-11-23 13:03:07,641 INFO L78 Accepts]: Start accepts. Automaton has 7 states. Word has length 33 [2018-11-23 13:03:07,641 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:07,641 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 7 states. [2018-11-23 13:03:07,645 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 7 states to 7 states and 157 transitions. [2018-11-23 13:03:07,645 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 7 states. [2018-11-23 13:03:07,649 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 7 states to 7 states and 157 transitions. [2018-11-23 13:03:07,649 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 7 states and 157 transitions. [2018-11-23 13:03:07,827 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 157 edges. 157 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:07,831 INFO L225 Difference]: With dead ends: 148 [2018-11-23 13:03:07,831 INFO L226 Difference]: Without dead ends: 101 [2018-11-23 13:03:07,832 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 9 GetRequests, 2 SyntacticMatches, 0 SemanticMatches, 7 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 3 ImplicationChecksByTransitivity, 0.1s TimeCoverageRelationStatistics Valid=23, Invalid=49, Unknown=0, NotChecked=0, Total=72 [2018-11-23 13:03:07,833 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 101 states. [2018-11-23 13:03:07,877 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 101 to 71. [2018-11-23 13:03:07,878 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:07,878 INFO L82 GeneralOperation]: Start isEquivalent. First operand 101 states. Second operand 71 states. [2018-11-23 13:03:07,878 INFO L74 IsIncluded]: Start isIncluded. First operand 101 states. Second operand 71 states. [2018-11-23 13:03:07,879 INFO L87 Difference]: Start difference. First operand 101 states. Second operand 71 states. [2018-11-23 13:03:07,883 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:07,884 INFO L93 Difference]: Finished difference Result 101 states and 134 transitions. [2018-11-23 13:03:07,884 INFO L276 IsEmpty]: Start isEmpty. Operand 101 states and 134 transitions. [2018-11-23 13:03:07,885 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:07,885 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:07,885 INFO L74 IsIncluded]: Start isIncluded. First operand 71 states. Second operand 101 states. [2018-11-23 13:03:07,885 INFO L87 Difference]: Start difference. First operand 71 states. Second operand 101 states. [2018-11-23 13:03:07,889 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:07,890 INFO L93 Difference]: Finished difference Result 101 states and 134 transitions. [2018-11-23 13:03:07,890 INFO L276 IsEmpty]: Start isEmpty. Operand 101 states and 134 transitions. [2018-11-23 13:03:07,890 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:07,891 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:07,891 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:07,891 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:07,891 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 71 states. [2018-11-23 13:03:07,894 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 71 states to 71 states and 92 transitions. [2018-11-23 13:03:07,894 INFO L78 Accepts]: Start accepts. Automaton has 71 states and 92 transitions. Word has length 33 [2018-11-23 13:03:07,894 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:07,894 INFO L480 AbstractCegarLoop]: Abstraction has 71 states and 92 transitions. [2018-11-23 13:03:07,894 INFO L481 AbstractCegarLoop]: Interpolant automaton has 7 states. [2018-11-23 13:03:07,895 INFO L276 IsEmpty]: Start isEmpty. Operand 71 states and 92 transitions. [2018-11-23 13:03:07,895 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 34 [2018-11-23 13:03:07,895 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:07,896 INFO L402 BasicCegarLoop]: trace histogram [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, 1, 1, 1] [2018-11-23 13:03:07,896 INFO L423 AbstractCegarLoop]: === Iteration 7 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:07,896 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:07,896 INFO L82 PathProgramCache]: Analyzing trace with hash 1558791110, now seen corresponding path program 1 times [2018-11-23 13:03:07,897 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:07,897 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:07,898 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:07,898 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:07,898 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:07,912 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:08,145 INFO L256 TraceCheckUtils]: 0: Hoare triple {2055#true} call ULTIMATE.init(); {2055#true} is VALID [2018-11-23 13:03:08,145 INFO L273 TraceCheckUtils]: 1: Hoare triple {2055#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {2055#true} is VALID [2018-11-23 13:03:08,146 INFO L273 TraceCheckUtils]: 2: Hoare triple {2055#true} assume true; {2055#true} is VALID [2018-11-23 13:03:08,146 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {2055#true} {2055#true} #125#return; {2055#true} is VALID [2018-11-23 13:03:08,146 INFO L256 TraceCheckUtils]: 4: Hoare triple {2055#true} call #t~ret20 := main(); {2055#true} is VALID [2018-11-23 13:03:08,146 INFO L273 TraceCheckUtils]: 5: Hoare triple {2055#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {2055#true} is VALID [2018-11-23 13:03:08,147 INFO L256 TraceCheckUtils]: 6: Hoare triple {2055#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {2055#true} is VALID [2018-11-23 13:03:08,148 INFO L273 TraceCheckUtils]: 7: Hoare triple {2055#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,148 INFO L273 TraceCheckUtils]: 8: Hoare triple {2057#(= parse_expression_list_~start~0 0)} assume !(~str.base == 0 && ~str.offset == 0); {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,150 INFO L273 TraceCheckUtils]: 9: Hoare triple {2057#(= parse_expression_list_~start~0 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,150 INFO L273 TraceCheckUtils]: 10: Hoare triple {2057#(= parse_expression_list_~start~0 0)} assume !#t~switch3; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,152 INFO L273 TraceCheckUtils]: 11: Hoare triple {2057#(= parse_expression_list_~start~0 0)} havoc #t~switch3;havoc #t~mem2; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,152 INFO L273 TraceCheckUtils]: 12: Hoare triple {2057#(= parse_expression_list_~start~0 0)} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,154 INFO L273 TraceCheckUtils]: 13: Hoare triple {2057#(= parse_expression_list_~start~0 0)} assume !!(0 != #t~mem0);havoc #t~mem0; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,154 INFO L273 TraceCheckUtils]: 14: Hoare triple {2057#(= parse_expression_list_~start~0 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,156 INFO L273 TraceCheckUtils]: 15: Hoare triple {2057#(= parse_expression_list_~start~0 0)} assume #t~switch3; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,156 INFO L273 TraceCheckUtils]: 16: Hoare triple {2057#(= parse_expression_list_~start~0 0)} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,158 INFO L273 TraceCheckUtils]: 17: Hoare triple {2057#(= parse_expression_list_~start~0 0)} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,158 INFO L273 TraceCheckUtils]: 18: Hoare triple {2057#(= parse_expression_list_~start~0 0)} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,160 INFO L273 TraceCheckUtils]: 19: Hoare triple {2057#(= parse_expression_list_~start~0 0)} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,162 INFO L273 TraceCheckUtils]: 20: Hoare triple {2057#(= parse_expression_list_~start~0 0)} assume !(34 == #t~mem8);havoc #t~mem8; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,162 INFO L273 TraceCheckUtils]: 21: Hoare triple {2057#(= parse_expression_list_~start~0 0)} ~j~0 := ~i~0 - 1; {2057#(= parse_expression_list_~start~0 0)} is VALID [2018-11-23 13:03:08,164 INFO L273 TraceCheckUtils]: 22: Hoare triple {2057#(= parse_expression_list_~start~0 0)} #t~short13 := 0 < ~j~0; {2058#(and (= parse_expression_list_~start~0 0) (or |parse_expression_list_#t~short13| (<= parse_expression_list_~j~0 0)))} is VALID [2018-11-23 13:03:08,166 INFO L273 TraceCheckUtils]: 23: Hoare triple {2058#(and (= parse_expression_list_~start~0 0) (or |parse_expression_list_#t~short13| (<= parse_expression_list_~j~0 0)))} assume !#t~short13; {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:08,167 INFO L273 TraceCheckUtils]: 24: Hoare triple {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:08,169 INFO L273 TraceCheckUtils]: 25: Hoare triple {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} #t~short16 := 0 < ~j~0; {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:08,172 INFO L273 TraceCheckUtils]: 26: Hoare triple {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} assume !#t~short16; {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:08,173 INFO L273 TraceCheckUtils]: 27: Hoare triple {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} assume !#t~short16;havoc #t~mem15;havoc #t~short16; {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:08,174 INFO L273 TraceCheckUtils]: 28: Hoare triple {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:08,176 INFO L256 TraceCheckUtils]: 29: Hoare triple {2059#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {2060#(= |__VERIFIER_assert_#in~cond| 1)} is VALID [2018-11-23 13:03:08,176 INFO L273 TraceCheckUtils]: 30: Hoare triple {2060#(= |__VERIFIER_assert_#in~cond| 1)} ~cond := #in~cond; {2061#(= __VERIFIER_assert_~cond 1)} is VALID [2018-11-23 13:03:08,178 INFO L273 TraceCheckUtils]: 31: Hoare triple {2061#(= __VERIFIER_assert_~cond 1)} assume 0 == ~cond; {2056#false} is VALID [2018-11-23 13:03:08,178 INFO L273 TraceCheckUtils]: 32: Hoare triple {2056#false} assume !false; {2056#false} is VALID [2018-11-23 13:03:08,180 INFO L134 CoverageAnalysis]: Checked inductivity of 2 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 2 trivial. 0 not checked. [2018-11-23 13:03:08,181 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:08,181 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [7] imperfect sequences [] total 7 [2018-11-23 13:03:08,181 INFO L78 Accepts]: Start accepts. Automaton has 7 states. Word has length 33 [2018-11-23 13:03:08,181 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:08,182 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 7 states. [2018-11-23 13:03:08,226 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 32 edges. 32 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:08,226 INFO L459 AbstractCegarLoop]: Interpolant automaton has 7 states [2018-11-23 13:03:08,226 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 7 interpolants. [2018-11-23 13:03:08,226 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=14, Invalid=28, Unknown=0, NotChecked=0, Total=42 [2018-11-23 13:03:08,227 INFO L87 Difference]: Start difference. First operand 71 states and 92 transitions. Second operand 7 states. [2018-11-23 13:03:08,980 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:08,980 INFO L93 Difference]: Finished difference Result 104 states and 134 transitions. [2018-11-23 13:03:08,980 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 7 states. [2018-11-23 13:03:08,980 INFO L78 Accepts]: Start accepts. Automaton has 7 states. Word has length 33 [2018-11-23 13:03:08,981 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:08,981 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 7 states. [2018-11-23 13:03:08,983 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 7 states to 7 states and 101 transitions. [2018-11-23 13:03:08,983 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 7 states. [2018-11-23 13:03:08,985 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 7 states to 7 states and 101 transitions. [2018-11-23 13:03:08,985 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 7 states and 101 transitions. [2018-11-23 13:03:09,085 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 101 edges. 101 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:09,088 INFO L225 Difference]: With dead ends: 104 [2018-11-23 13:03:09,088 INFO L226 Difference]: Without dead ends: 102 [2018-11-23 13:03:09,088 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 8 GetRequests, 2 SyntacticMatches, 0 SemanticMatches, 6 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 6 ImplicationChecksByTransitivity, 0.1s TimeCoverageRelationStatistics Valid=18, Invalid=38, Unknown=0, NotChecked=0, Total=56 [2018-11-23 13:03:09,089 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 102 states. [2018-11-23 13:03:09,122 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 102 to 91. [2018-11-23 13:03:09,122 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:09,122 INFO L82 GeneralOperation]: Start isEquivalent. First operand 102 states. Second operand 91 states. [2018-11-23 13:03:09,123 INFO L74 IsIncluded]: Start isIncluded. First operand 102 states. Second operand 91 states. [2018-11-23 13:03:09,123 INFO L87 Difference]: Start difference. First operand 102 states. Second operand 91 states. [2018-11-23 13:03:09,127 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:09,127 INFO L93 Difference]: Finished difference Result 102 states and 132 transitions. [2018-11-23 13:03:09,127 INFO L276 IsEmpty]: Start isEmpty. Operand 102 states and 132 transitions. [2018-11-23 13:03:09,128 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:09,128 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:09,128 INFO L74 IsIncluded]: Start isIncluded. First operand 91 states. Second operand 102 states. [2018-11-23 13:03:09,128 INFO L87 Difference]: Start difference. First operand 91 states. Second operand 102 states. [2018-11-23 13:03:09,132 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:09,132 INFO L93 Difference]: Finished difference Result 102 states and 132 transitions. [2018-11-23 13:03:09,132 INFO L276 IsEmpty]: Start isEmpty. Operand 102 states and 132 transitions. [2018-11-23 13:03:09,133 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:09,133 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:09,133 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:09,133 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:09,133 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 91 states. [2018-11-23 13:03:09,136 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 91 states to 91 states and 118 transitions. [2018-11-23 13:03:09,136 INFO L78 Accepts]: Start accepts. Automaton has 91 states and 118 transitions. Word has length 33 [2018-11-23 13:03:09,137 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:09,137 INFO L480 AbstractCegarLoop]: Abstraction has 91 states and 118 transitions. [2018-11-23 13:03:09,137 INFO L481 AbstractCegarLoop]: Interpolant automaton has 7 states. [2018-11-23 13:03:09,137 INFO L276 IsEmpty]: Start isEmpty. Operand 91 states and 118 transitions. [2018-11-23 13:03:09,138 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 36 [2018-11-23 13:03:09,138 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:09,138 INFO L402 BasicCegarLoop]: trace histogram [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, 1, 1, 1, 1, 1] [2018-11-23 13:03:09,138 INFO L423 AbstractCegarLoop]: === Iteration 8 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:09,139 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:09,139 INFO L82 PathProgramCache]: Analyzing trace with hash -431019319, now seen corresponding path program 1 times [2018-11-23 13:03:09,139 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:09,139 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:09,140 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:09,140 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:09,140 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:09,152 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:09,251 INFO L256 TraceCheckUtils]: 0: Hoare triple {2508#true} call ULTIMATE.init(); {2508#true} is VALID [2018-11-23 13:03:09,251 INFO L273 TraceCheckUtils]: 1: Hoare triple {2508#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {2508#true} is VALID [2018-11-23 13:03:09,251 INFO L273 TraceCheckUtils]: 2: Hoare triple {2508#true} assume true; {2508#true} is VALID [2018-11-23 13:03:09,252 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {2508#true} {2508#true} #125#return; {2508#true} is VALID [2018-11-23 13:03:09,252 INFO L256 TraceCheckUtils]: 4: Hoare triple {2508#true} call #t~ret20 := main(); {2508#true} is VALID [2018-11-23 13:03:09,252 INFO L273 TraceCheckUtils]: 5: Hoare triple {2508#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {2508#true} is VALID [2018-11-23 13:03:09,252 INFO L256 TraceCheckUtils]: 6: Hoare triple {2508#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {2508#true} is VALID [2018-11-23 13:03:09,253 INFO L273 TraceCheckUtils]: 7: Hoare triple {2508#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {2508#true} is VALID [2018-11-23 13:03:09,253 INFO L273 TraceCheckUtils]: 8: Hoare triple {2508#true} assume !(~str.base == 0 && ~str.offset == 0); {2508#true} is VALID [2018-11-23 13:03:09,253 INFO L273 TraceCheckUtils]: 9: Hoare triple {2508#true} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {2508#true} is VALID [2018-11-23 13:03:09,253 INFO L273 TraceCheckUtils]: 10: Hoare triple {2508#true} assume !#t~switch3; {2508#true} is VALID [2018-11-23 13:03:09,254 INFO L273 TraceCheckUtils]: 11: Hoare triple {2508#true} havoc #t~switch3;havoc #t~mem2; {2508#true} is VALID [2018-11-23 13:03:09,254 INFO L273 TraceCheckUtils]: 12: Hoare triple {2508#true} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {2508#true} is VALID [2018-11-23 13:03:09,254 INFO L273 TraceCheckUtils]: 13: Hoare triple {2508#true} assume !!(0 != #t~mem0);havoc #t~mem0; {2508#true} is VALID [2018-11-23 13:03:09,254 INFO L273 TraceCheckUtils]: 14: Hoare triple {2508#true} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {2508#true} is VALID [2018-11-23 13:03:09,255 INFO L273 TraceCheckUtils]: 15: Hoare triple {2508#true} assume #t~switch3; {2508#true} is VALID [2018-11-23 13:03:09,255 INFO L273 TraceCheckUtils]: 16: Hoare triple {2508#true} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {2508#true} is VALID [2018-11-23 13:03:09,255 INFO L273 TraceCheckUtils]: 17: Hoare triple {2508#true} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {2508#true} is VALID [2018-11-23 13:03:09,255 INFO L273 TraceCheckUtils]: 18: Hoare triple {2508#true} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {2508#true} is VALID [2018-11-23 13:03:09,255 INFO L273 TraceCheckUtils]: 19: Hoare triple {2508#true} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {2508#true} is VALID [2018-11-23 13:03:09,256 INFO L273 TraceCheckUtils]: 20: Hoare triple {2508#true} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {2508#true} is VALID [2018-11-23 13:03:09,256 INFO L273 TraceCheckUtils]: 21: Hoare triple {2508#true} ~j~0 := ~i~0 - 1; {2508#true} is VALID [2018-11-23 13:03:09,256 INFO L273 TraceCheckUtils]: 22: Hoare triple {2508#true} #t~short13 := 0 < ~j~0; {2508#true} is VALID [2018-11-23 13:03:09,256 INFO L273 TraceCheckUtils]: 23: Hoare triple {2508#true} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {2508#true} is VALID [2018-11-23 13:03:09,263 INFO L273 TraceCheckUtils]: 24: Hoare triple {2508#true} assume #t~short12; {2510#|parse_expression_list_#t~short12|} is VALID [2018-11-23 13:03:09,265 INFO L273 TraceCheckUtils]: 25: Hoare triple {2510#|parse_expression_list_#t~short12|} #t~short13 := #t~short12; {2511#|parse_expression_list_#t~short13|} is VALID [2018-11-23 13:03:09,265 INFO L273 TraceCheckUtils]: 26: Hoare triple {2511#|parse_expression_list_#t~short13|} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {2509#false} is VALID [2018-11-23 13:03:09,265 INFO L273 TraceCheckUtils]: 27: Hoare triple {2509#false} #t~short16 := 0 < ~j~0; {2509#false} is VALID [2018-11-23 13:03:09,265 INFO L273 TraceCheckUtils]: 28: Hoare triple {2509#false} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {2509#false} is VALID [2018-11-23 13:03:09,266 INFO L273 TraceCheckUtils]: 29: Hoare triple {2509#false} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {2509#false} is VALID [2018-11-23 13:03:09,266 INFO L273 TraceCheckUtils]: 30: Hoare triple {2509#false} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {2509#false} is VALID [2018-11-23 13:03:09,266 INFO L256 TraceCheckUtils]: 31: Hoare triple {2509#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {2509#false} is VALID [2018-11-23 13:03:09,266 INFO L273 TraceCheckUtils]: 32: Hoare triple {2509#false} ~cond := #in~cond; {2509#false} is VALID [2018-11-23 13:03:09,267 INFO L273 TraceCheckUtils]: 33: Hoare triple {2509#false} assume 0 == ~cond; {2509#false} is VALID [2018-11-23 13:03:09,267 INFO L273 TraceCheckUtils]: 34: Hoare triple {2509#false} assume !false; {2509#false} is VALID [2018-11-23 13:03:09,269 INFO L134 CoverageAnalysis]: Checked inductivity of 2 backedges. 0 proven. 0 refuted. 0 times theorem prover too weak. 2 trivial. 0 not checked. [2018-11-23 13:03:09,269 INFO L312 seRefinementStrategy]: Constructing automaton from 1 perfect and 0 imperfect interpolant sequences. [2018-11-23 13:03:09,269 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [4] imperfect sequences [] total 4 [2018-11-23 13:03:09,269 INFO L78 Accepts]: Start accepts. Automaton has 4 states. Word has length 35 [2018-11-23 13:03:09,270 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:09,270 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 4 states. [2018-11-23 13:03:09,329 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 34 edges. 34 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:09,329 INFO L459 AbstractCegarLoop]: Interpolant automaton has 4 states [2018-11-23 13:03:09,329 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 4 interpolants. [2018-11-23 13:03:09,330 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=5, Invalid=7, Unknown=0, NotChecked=0, Total=12 [2018-11-23 13:03:09,330 INFO L87 Difference]: Start difference. First operand 91 states and 118 transitions. Second operand 4 states. [2018-11-23 13:03:09,475 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:09,475 INFO L93 Difference]: Finished difference Result 148 states and 192 transitions. [2018-11-23 13:03:09,475 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 4 states. [2018-11-23 13:03:09,476 INFO L78 Accepts]: Start accepts. Automaton has 4 states. Word has length 35 [2018-11-23 13:03:09,476 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:09,476 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 4 states. [2018-11-23 13:03:09,478 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 4 states to 4 states and 88 transitions. [2018-11-23 13:03:09,479 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 4 states. [2018-11-23 13:03:09,480 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 4 states to 4 states and 88 transitions. [2018-11-23 13:03:09,481 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 4 states and 88 transitions. [2018-11-23 13:03:09,840 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 88 edges. 88 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:09,843 INFO L225 Difference]: With dead ends: 148 [2018-11-23 13:03:09,844 INFO L226 Difference]: Without dead ends: 101 [2018-11-23 13:03:09,844 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 5 GetRequests, 2 SyntacticMatches, 0 SemanticMatches, 3 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 0 ImplicationChecksByTransitivity, 0.0s TimeCoverageRelationStatistics Valid=9, Invalid=11, Unknown=0, NotChecked=0, Total=20 [2018-11-23 13:03:09,845 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 101 states. [2018-11-23 13:03:09,875 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 101 to 101. [2018-11-23 13:03:09,876 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:09,876 INFO L82 GeneralOperation]: Start isEquivalent. First operand 101 states. Second operand 101 states. [2018-11-23 13:03:09,876 INFO L74 IsIncluded]: Start isIncluded. First operand 101 states. Second operand 101 states. [2018-11-23 13:03:09,877 INFO L87 Difference]: Start difference. First operand 101 states. Second operand 101 states. [2018-11-23 13:03:09,881 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:09,881 INFO L93 Difference]: Finished difference Result 101 states and 128 transitions. [2018-11-23 13:03:09,881 INFO L276 IsEmpty]: Start isEmpty. Operand 101 states and 128 transitions. [2018-11-23 13:03:09,882 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:09,882 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:09,882 INFO L74 IsIncluded]: Start isIncluded. First operand 101 states. Second operand 101 states. [2018-11-23 13:03:09,882 INFO L87 Difference]: Start difference. First operand 101 states. Second operand 101 states. [2018-11-23 13:03:09,886 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:09,886 INFO L93 Difference]: Finished difference Result 101 states and 128 transitions. [2018-11-23 13:03:09,886 INFO L276 IsEmpty]: Start isEmpty. Operand 101 states and 128 transitions. [2018-11-23 13:03:09,887 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:09,887 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:09,887 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:09,887 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:09,887 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 101 states. [2018-11-23 13:03:09,891 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 101 states to 101 states and 128 transitions. [2018-11-23 13:03:09,891 INFO L78 Accepts]: Start accepts. Automaton has 101 states and 128 transitions. Word has length 35 [2018-11-23 13:03:09,891 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:09,891 INFO L480 AbstractCegarLoop]: Abstraction has 101 states and 128 transitions. [2018-11-23 13:03:09,891 INFO L481 AbstractCegarLoop]: Interpolant automaton has 4 states. [2018-11-23 13:03:09,891 INFO L276 IsEmpty]: Start isEmpty. Operand 101 states and 128 transitions. [2018-11-23 13:03:09,892 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 36 [2018-11-23 13:03:09,892 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:09,892 INFO L402 BasicCegarLoop]: trace histogram [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, 1, 1, 1, 1, 1] [2018-11-23 13:03:09,893 INFO L423 AbstractCegarLoop]: === Iteration 9 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:09,893 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:09,893 INFO L82 PathProgramCache]: Analyzing trace with hash 270045259, now seen corresponding path program 1 times [2018-11-23 13:03:09,893 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:09,893 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:09,894 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:09,894 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:09,894 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:09,906 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:10,019 INFO L256 TraceCheckUtils]: 0: Hoare triple {3017#true} call ULTIMATE.init(); {3017#true} is VALID [2018-11-23 13:03:10,020 INFO L273 TraceCheckUtils]: 1: Hoare triple {3017#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {3017#true} is VALID [2018-11-23 13:03:10,020 INFO L273 TraceCheckUtils]: 2: Hoare triple {3017#true} assume true; {3017#true} is VALID [2018-11-23 13:03:10,020 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {3017#true} {3017#true} #125#return; {3017#true} is VALID [2018-11-23 13:03:10,020 INFO L256 TraceCheckUtils]: 4: Hoare triple {3017#true} call #t~ret20 := main(); {3017#true} is VALID [2018-11-23 13:03:10,021 INFO L273 TraceCheckUtils]: 5: Hoare triple {3017#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {3017#true} is VALID [2018-11-23 13:03:10,021 INFO L256 TraceCheckUtils]: 6: Hoare triple {3017#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {3017#true} is VALID [2018-11-23 13:03:10,022 INFO L273 TraceCheckUtils]: 7: Hoare triple {3017#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {3019#(<= (+ parse_expression_list_~i~0 1) 0)} is VALID [2018-11-23 13:03:10,022 INFO L273 TraceCheckUtils]: 8: Hoare triple {3019#(<= (+ parse_expression_list_~i~0 1) 0)} assume !(~str.base == 0 && ~str.offset == 0); {3019#(<= (+ parse_expression_list_~i~0 1) 0)} is VALID [2018-11-23 13:03:10,023 INFO L273 TraceCheckUtils]: 9: Hoare triple {3019#(<= (+ parse_expression_list_~i~0 1) 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,023 INFO L273 TraceCheckUtils]: 10: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} assume !#t~switch3; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,024 INFO L273 TraceCheckUtils]: 11: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} havoc #t~switch3;havoc #t~mem2; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,026 INFO L273 TraceCheckUtils]: 12: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,026 INFO L273 TraceCheckUtils]: 13: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} assume !!(0 != #t~mem0);havoc #t~mem0; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,027 INFO L273 TraceCheckUtils]: 14: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,027 INFO L273 TraceCheckUtils]: 15: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume #t~switch3; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,028 INFO L273 TraceCheckUtils]: 16: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,032 INFO L273 TraceCheckUtils]: 17: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,035 INFO L273 TraceCheckUtils]: 18: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,037 INFO L273 TraceCheckUtils]: 19: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,038 INFO L273 TraceCheckUtils]: 20: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,038 INFO L273 TraceCheckUtils]: 21: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} ~j~0 := ~i~0 - 1; {3022#(<= parse_expression_list_~j~0 0)} is VALID [2018-11-23 13:03:10,056 INFO L273 TraceCheckUtils]: 22: Hoare triple {3022#(<= parse_expression_list_~j~0 0)} #t~short13 := 0 < ~j~0; {3023#(and (not |parse_expression_list_#t~short13|) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:10,071 INFO L273 TraceCheckUtils]: 23: Hoare triple {3023#(and (not |parse_expression_list_#t~short13|) (<= parse_expression_list_~j~0 0))} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {3018#false} is VALID [2018-11-23 13:03:10,071 INFO L273 TraceCheckUtils]: 24: Hoare triple {3018#false} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {3018#false} is VALID [2018-11-23 13:03:10,071 INFO L273 TraceCheckUtils]: 25: Hoare triple {3018#false} #t~short13 := #t~short12; {3018#false} is VALID [2018-11-23 13:03:10,072 INFO L273 TraceCheckUtils]: 26: Hoare triple {3018#false} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {3018#false} is VALID [2018-11-23 13:03:10,072 INFO L273 TraceCheckUtils]: 27: Hoare triple {3018#false} #t~short16 := 0 < ~j~0; {3018#false} is VALID [2018-11-23 13:03:10,072 INFO L273 TraceCheckUtils]: 28: Hoare triple {3018#false} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {3018#false} is VALID [2018-11-23 13:03:10,072 INFO L273 TraceCheckUtils]: 29: Hoare triple {3018#false} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {3018#false} is VALID [2018-11-23 13:03:10,072 INFO L273 TraceCheckUtils]: 30: Hoare triple {3018#false} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {3018#false} is VALID [2018-11-23 13:03:10,073 INFO L256 TraceCheckUtils]: 31: Hoare triple {3018#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {3018#false} is VALID [2018-11-23 13:03:10,073 INFO L273 TraceCheckUtils]: 32: Hoare triple {3018#false} ~cond := #in~cond; {3018#false} is VALID [2018-11-23 13:03:10,073 INFO L273 TraceCheckUtils]: 33: Hoare triple {3018#false} assume 0 == ~cond; {3018#false} is VALID [2018-11-23 13:03:10,073 INFO L273 TraceCheckUtils]: 34: Hoare triple {3018#false} assume !false; {3018#false} is VALID [2018-11-23 13:03:10,075 INFO L134 CoverageAnalysis]: Checked inductivity of 2 backedges. 0 proven. 2 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:10,075 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 13:03:10,075 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/z3 Starting monitored process 2 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 2 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 13:03:10,086 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:10,124 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:10,152 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:10,159 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 13:03:10,910 INFO L256 TraceCheckUtils]: 0: Hoare triple {3017#true} call ULTIMATE.init(); {3017#true} is VALID [2018-11-23 13:03:10,911 INFO L273 TraceCheckUtils]: 1: Hoare triple {3017#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {3017#true} is VALID [2018-11-23 13:03:10,911 INFO L273 TraceCheckUtils]: 2: Hoare triple {3017#true} assume true; {3017#true} is VALID [2018-11-23 13:03:10,911 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {3017#true} {3017#true} #125#return; {3017#true} is VALID [2018-11-23 13:03:10,912 INFO L256 TraceCheckUtils]: 4: Hoare triple {3017#true} call #t~ret20 := main(); {3017#true} is VALID [2018-11-23 13:03:10,912 INFO L273 TraceCheckUtils]: 5: Hoare triple {3017#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {3017#true} is VALID [2018-11-23 13:03:10,912 INFO L256 TraceCheckUtils]: 6: Hoare triple {3017#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {3017#true} is VALID [2018-11-23 13:03:10,913 INFO L273 TraceCheckUtils]: 7: Hoare triple {3017#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {3019#(<= (+ parse_expression_list_~i~0 1) 0)} is VALID [2018-11-23 13:03:10,914 INFO L273 TraceCheckUtils]: 8: Hoare triple {3019#(<= (+ parse_expression_list_~i~0 1) 0)} assume !(~str.base == 0 && ~str.offset == 0); {3019#(<= (+ parse_expression_list_~i~0 1) 0)} is VALID [2018-11-23 13:03:10,914 INFO L273 TraceCheckUtils]: 9: Hoare triple {3019#(<= (+ parse_expression_list_~i~0 1) 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,915 INFO L273 TraceCheckUtils]: 10: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} assume !#t~switch3; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,915 INFO L273 TraceCheckUtils]: 11: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} havoc #t~switch3;havoc #t~mem2; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,916 INFO L273 TraceCheckUtils]: 12: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,916 INFO L273 TraceCheckUtils]: 13: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} assume !!(0 != #t~mem0);havoc #t~mem0; {3020#(<= parse_expression_list_~i~0 0)} is VALID [2018-11-23 13:03:10,933 INFO L273 TraceCheckUtils]: 14: Hoare triple {3020#(<= parse_expression_list_~i~0 0)} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,942 INFO L273 TraceCheckUtils]: 15: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume #t~switch3; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,957 INFO L273 TraceCheckUtils]: 16: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,966 INFO L273 TraceCheckUtils]: 17: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,979 INFO L273 TraceCheckUtils]: 18: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:10,988 INFO L273 TraceCheckUtils]: 19: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:11,000 INFO L273 TraceCheckUtils]: 20: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {3021#(<= parse_expression_list_~i~0 1)} is VALID [2018-11-23 13:03:11,014 INFO L273 TraceCheckUtils]: 21: Hoare triple {3021#(<= parse_expression_list_~i~0 1)} ~j~0 := ~i~0 - 1; {3022#(<= parse_expression_list_~j~0 0)} is VALID [2018-11-23 13:03:11,023 INFO L273 TraceCheckUtils]: 22: Hoare triple {3022#(<= parse_expression_list_~j~0 0)} #t~short13 := 0 < ~j~0; {3093#(not |parse_expression_list_#t~short13|)} is VALID [2018-11-23 13:03:11,036 INFO L273 TraceCheckUtils]: 23: Hoare triple {3093#(not |parse_expression_list_#t~short13|)} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {3018#false} is VALID [2018-11-23 13:03:11,036 INFO L273 TraceCheckUtils]: 24: Hoare triple {3018#false} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {3018#false} is VALID [2018-11-23 13:03:11,036 INFO L273 TraceCheckUtils]: 25: Hoare triple {3018#false} #t~short13 := #t~short12; {3018#false} is VALID [2018-11-23 13:03:11,036 INFO L273 TraceCheckUtils]: 26: Hoare triple {3018#false} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {3018#false} is VALID [2018-11-23 13:03:11,037 INFO L273 TraceCheckUtils]: 27: Hoare triple {3018#false} #t~short16 := 0 < ~j~0; {3018#false} is VALID [2018-11-23 13:03:11,037 INFO L273 TraceCheckUtils]: 28: Hoare triple {3018#false} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {3018#false} is VALID [2018-11-23 13:03:11,037 INFO L273 TraceCheckUtils]: 29: Hoare triple {3018#false} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {3018#false} is VALID [2018-11-23 13:03:11,037 INFO L273 TraceCheckUtils]: 30: Hoare triple {3018#false} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {3018#false} is VALID [2018-11-23 13:03:11,037 INFO L256 TraceCheckUtils]: 31: Hoare triple {3018#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {3018#false} is VALID [2018-11-23 13:03:11,038 INFO L273 TraceCheckUtils]: 32: Hoare triple {3018#false} ~cond := #in~cond; {3018#false} is VALID [2018-11-23 13:03:11,038 INFO L273 TraceCheckUtils]: 33: Hoare triple {3018#false} assume 0 == ~cond; {3018#false} is VALID [2018-11-23 13:03:11,038 INFO L273 TraceCheckUtils]: 34: Hoare triple {3018#false} assume !false; {3018#false} is VALID [2018-11-23 13:03:11,040 INFO L134 CoverageAnalysis]: Checked inductivity of 2 backedges. 0 proven. 2 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:11,071 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 13:03:11,071 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [7, 7] total 8 [2018-11-23 13:03:11,072 INFO L78 Accepts]: Start accepts. Automaton has 8 states. Word has length 35 [2018-11-23 13:03:11,072 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:11,072 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 8 states. [2018-11-23 13:03:11,210 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 13:03:11,211 INFO L459 AbstractCegarLoop]: Interpolant automaton has 8 states [2018-11-23 13:03:11,211 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 8 interpolants. [2018-11-23 13:03:11,211 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=18, Invalid=38, Unknown=0, NotChecked=0, Total=56 [2018-11-23 13:03:11,212 INFO L87 Difference]: Start difference. First operand 101 states and 128 transitions. Second operand 8 states. [2018-11-23 13:03:11,848 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:11,848 INFO L93 Difference]: Finished difference Result 211 states and 268 transitions. [2018-11-23 13:03:11,848 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 8 states. [2018-11-23 13:03:11,849 INFO L78 Accepts]: Start accepts. Automaton has 8 states. Word has length 35 [2018-11-23 13:03:11,849 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:11,849 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 8 states. [2018-11-23 13:03:11,851 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 8 states to 8 states and 136 transitions. [2018-11-23 13:03:11,852 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 8 states. [2018-11-23 13:03:11,854 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 8 states to 8 states and 136 transitions. [2018-11-23 13:03:11,854 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 8 states and 136 transitions. [2018-11-23 13:03:12,029 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 136 edges. 136 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:12,034 INFO L225 Difference]: With dead ends: 211 [2018-11-23 13:03:12,034 INFO L226 Difference]: Without dead ends: 130 [2018-11-23 13:03:12,035 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 46 GetRequests, 36 SyntacticMatches, 0 SemanticMatches, 10 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 12 ImplicationChecksByTransitivity, 0.1s TimeCoverageRelationStatistics Valid=43, Invalid=89, Unknown=0, NotChecked=0, Total=132 [2018-11-23 13:03:12,035 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 130 states. [2018-11-23 13:03:12,076 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 130 to 102. [2018-11-23 13:03:12,077 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:12,077 INFO L82 GeneralOperation]: Start isEquivalent. First operand 130 states. Second operand 102 states. [2018-11-23 13:03:12,077 INFO L74 IsIncluded]: Start isIncluded. First operand 130 states. Second operand 102 states. [2018-11-23 13:03:12,077 INFO L87 Difference]: Start difference. First operand 130 states. Second operand 102 states. [2018-11-23 13:03:12,083 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:12,083 INFO L93 Difference]: Finished difference Result 130 states and 157 transitions. [2018-11-23 13:03:12,083 INFO L276 IsEmpty]: Start isEmpty. Operand 130 states and 157 transitions. [2018-11-23 13:03:12,084 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:12,084 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:12,084 INFO L74 IsIncluded]: Start isIncluded. First operand 102 states. Second operand 130 states. [2018-11-23 13:03:12,084 INFO L87 Difference]: Start difference. First operand 102 states. Second operand 130 states. [2018-11-23 13:03:12,088 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:12,088 INFO L93 Difference]: Finished difference Result 130 states and 157 transitions. [2018-11-23 13:03:12,088 INFO L276 IsEmpty]: Start isEmpty. Operand 130 states and 157 transitions. [2018-11-23 13:03:12,089 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:12,089 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:12,089 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:12,089 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:12,089 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 102 states. [2018-11-23 13:03:12,092 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 102 states to 102 states and 124 transitions. [2018-11-23 13:03:12,092 INFO L78 Accepts]: Start accepts. Automaton has 102 states and 124 transitions. Word has length 35 [2018-11-23 13:03:12,092 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:12,092 INFO L480 AbstractCegarLoop]: Abstraction has 102 states and 124 transitions. [2018-11-23 13:03:12,092 INFO L481 AbstractCegarLoop]: Interpolant automaton has 8 states. [2018-11-23 13:03:12,092 INFO L276 IsEmpty]: Start isEmpty. Operand 102 states and 124 transitions. [2018-11-23 13:03:12,093 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 41 [2018-11-23 13:03:12,093 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:12,093 INFO L402 BasicCegarLoop]: trace histogram [3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 13:03:12,093 INFO L423 AbstractCegarLoop]: === Iteration 10 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:12,094 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:12,094 INFO L82 PathProgramCache]: Analyzing trace with hash 22950958, now seen corresponding path program 2 times [2018-11-23 13:03:12,094 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:12,094 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:12,095 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:12,095 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:12,095 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:12,109 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:12,274 INFO L256 TraceCheckUtils]: 0: Hoare triple {3772#true} call ULTIMATE.init(); {3772#true} is VALID [2018-11-23 13:03:12,274 INFO L273 TraceCheckUtils]: 1: Hoare triple {3772#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {3772#true} is VALID [2018-11-23 13:03:12,275 INFO L273 TraceCheckUtils]: 2: Hoare triple {3772#true} assume true; {3772#true} is VALID [2018-11-23 13:03:12,275 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {3772#true} {3772#true} #125#return; {3772#true} is VALID [2018-11-23 13:03:12,276 INFO L256 TraceCheckUtils]: 4: Hoare triple {3772#true} call #t~ret20 := main(); {3772#true} is VALID [2018-11-23 13:03:12,276 INFO L273 TraceCheckUtils]: 5: Hoare triple {3772#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {3772#true} is VALID [2018-11-23 13:03:12,276 INFO L256 TraceCheckUtils]: 6: Hoare triple {3772#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {3772#true} is VALID [2018-11-23 13:03:12,277 INFO L273 TraceCheckUtils]: 7: Hoare triple {3772#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {3774#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,277 INFO L273 TraceCheckUtils]: 8: Hoare triple {3774#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} assume !(~str.base == 0 && ~str.offset == 0); {3774#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,278 INFO L273 TraceCheckUtils]: 9: Hoare triple {3774#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,279 INFO L273 TraceCheckUtils]: 10: Hoare triple {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !#t~switch3; {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,279 INFO L273 TraceCheckUtils]: 11: Hoare triple {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} havoc #t~switch3;havoc #t~mem2; {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,279 INFO L273 TraceCheckUtils]: 12: Hoare triple {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,280 INFO L273 TraceCheckUtils]: 13: Hoare triple {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !!(0 != #t~mem0);havoc #t~mem0; {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,284 INFO L273 TraceCheckUtils]: 14: Hoare triple {3775#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,285 INFO L273 TraceCheckUtils]: 15: Hoare triple {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} assume !#t~switch3; {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,286 INFO L273 TraceCheckUtils]: 16: Hoare triple {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} havoc #t~switch3;havoc #t~mem2; {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,286 INFO L273 TraceCheckUtils]: 17: Hoare triple {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,287 INFO L273 TraceCheckUtils]: 18: Hoare triple {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} assume !!(0 != #t~mem0);havoc #t~mem0; {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:12,287 INFO L273 TraceCheckUtils]: 19: Hoare triple {3776#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,288 INFO L273 TraceCheckUtils]: 20: Hoare triple {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume #t~switch3; {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,289 INFO L273 TraceCheckUtils]: 21: Hoare triple {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,289 INFO L273 TraceCheckUtils]: 22: Hoare triple {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,290 INFO L273 TraceCheckUtils]: 23: Hoare triple {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,293 INFO L273 TraceCheckUtils]: 24: Hoare triple {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,295 INFO L273 TraceCheckUtils]: 25: Hoare triple {3777#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {3778#(<= parse_expression_list_~i~0 (+ parse_expression_list_~start~0 1))} is VALID [2018-11-23 13:03:12,296 INFO L273 TraceCheckUtils]: 26: Hoare triple {3778#(<= parse_expression_list_~i~0 (+ parse_expression_list_~start~0 1))} ~j~0 := ~i~0 - 1; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,297 INFO L273 TraceCheckUtils]: 27: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} #t~short13 := 0 < ~j~0; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,297 INFO L273 TraceCheckUtils]: 28: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,299 INFO L273 TraceCheckUtils]: 29: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,299 INFO L273 TraceCheckUtils]: 30: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} #t~short13 := #t~short12; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,300 INFO L273 TraceCheckUtils]: 31: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,300 INFO L273 TraceCheckUtils]: 32: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} #t~short16 := 0 < ~j~0; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,301 INFO L273 TraceCheckUtils]: 33: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,301 INFO L273 TraceCheckUtils]: 34: Hoare triple {3779#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {3780#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:12,302 INFO L273 TraceCheckUtils]: 35: Hoare triple {3780#(<= (+ parse_expression_list_~j~0 1) parse_expression_list_~start~0)} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {3773#false} is VALID [2018-11-23 13:03:12,302 INFO L256 TraceCheckUtils]: 36: Hoare triple {3773#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {3773#false} is VALID [2018-11-23 13:03:12,302 INFO L273 TraceCheckUtils]: 37: Hoare triple {3773#false} ~cond := #in~cond; {3773#false} is VALID [2018-11-23 13:03:12,302 INFO L273 TraceCheckUtils]: 38: Hoare triple {3773#false} assume 0 == ~cond; {3773#false} is VALID [2018-11-23 13:03:12,302 INFO L273 TraceCheckUtils]: 39: Hoare triple {3773#false} assume !false; {3773#false} is VALID [2018-11-23 13:03:12,305 INFO L134 CoverageAnalysis]: Checked inductivity of 9 backedges. 0 proven. 9 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:12,305 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 13:03:12,305 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/z3 Starting monitored process 3 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 3 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 13:03:12,325 INFO L103 rtionOrderModulation]: Keeping assertion order OUTSIDE_LOOP_FIRST1 [2018-11-23 13:03:12,370 INFO L249 tOrderPrioritization]: Assert order OUTSIDE_LOOP_FIRST1 issued 2 check-sat command(s) [2018-11-23 13:03:12,370 INFO L250 tOrderPrioritization]: Conjunction of SSA is unsat [2018-11-23 13:03:12,398 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:12,399 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 13:03:12,648 INFO L256 TraceCheckUtils]: 0: Hoare triple {3772#true} call ULTIMATE.init(); {3772#true} is VALID [2018-11-23 13:03:12,649 INFO L273 TraceCheckUtils]: 1: Hoare triple {3772#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {3772#true} is VALID [2018-11-23 13:03:12,649 INFO L273 TraceCheckUtils]: 2: Hoare triple {3772#true} assume true; {3772#true} is VALID [2018-11-23 13:03:12,649 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {3772#true} {3772#true} #125#return; {3772#true} is VALID [2018-11-23 13:03:12,650 INFO L256 TraceCheckUtils]: 4: Hoare triple {3772#true} call #t~ret20 := main(); {3772#true} is VALID [2018-11-23 13:03:12,650 INFO L273 TraceCheckUtils]: 5: Hoare triple {3772#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {3772#true} is VALID [2018-11-23 13:03:12,650 INFO L256 TraceCheckUtils]: 6: Hoare triple {3772#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {3772#true} is VALID [2018-11-23 13:03:12,656 INFO L273 TraceCheckUtils]: 7: Hoare triple {3772#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {3805#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,658 INFO L273 TraceCheckUtils]: 8: Hoare triple {3805#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} assume !(~str.base == 0 && ~str.offset == 0); {3805#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,658 INFO L273 TraceCheckUtils]: 9: Hoare triple {3805#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,659 INFO L273 TraceCheckUtils]: 10: Hoare triple {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} assume !#t~switch3; {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,659 INFO L273 TraceCheckUtils]: 11: Hoare triple {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} havoc #t~switch3;havoc #t~mem2; {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,660 INFO L273 TraceCheckUtils]: 12: Hoare triple {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,660 INFO L273 TraceCheckUtils]: 13: Hoare triple {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} assume !!(0 != #t~mem0);havoc #t~mem0; {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,661 INFO L273 TraceCheckUtils]: 14: Hoare triple {3812#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,661 INFO L273 TraceCheckUtils]: 15: Hoare triple {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} assume !#t~switch3; {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,662 INFO L273 TraceCheckUtils]: 16: Hoare triple {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} havoc #t~switch3;havoc #t~mem2; {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,663 INFO L273 TraceCheckUtils]: 17: Hoare triple {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,663 INFO L273 TraceCheckUtils]: 18: Hoare triple {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} assume !!(0 != #t~mem0);havoc #t~mem0; {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:12,665 INFO L273 TraceCheckUtils]: 19: Hoare triple {3828#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,665 INFO L273 TraceCheckUtils]: 20: Hoare triple {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume #t~switch3; {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,666 INFO L273 TraceCheckUtils]: 21: Hoare triple {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,667 INFO L273 TraceCheckUtils]: 22: Hoare triple {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,669 INFO L273 TraceCheckUtils]: 23: Hoare triple {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,669 INFO L273 TraceCheckUtils]: 24: Hoare triple {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,670 INFO L273 TraceCheckUtils]: 25: Hoare triple {3844#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {3863#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:12,671 INFO L273 TraceCheckUtils]: 26: Hoare triple {3863#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} ~j~0 := ~i~0 - 1; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,672 INFO L273 TraceCheckUtils]: 27: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} #t~short13 := 0 < ~j~0; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,673 INFO L273 TraceCheckUtils]: 28: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,674 INFO L273 TraceCheckUtils]: 29: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,677 INFO L273 TraceCheckUtils]: 30: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} #t~short13 := #t~short12; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,677 INFO L273 TraceCheckUtils]: 31: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,678 INFO L273 TraceCheckUtils]: 32: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} #t~short16 := 0 < ~j~0; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,678 INFO L273 TraceCheckUtils]: 33: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:12,679 INFO L273 TraceCheckUtils]: 34: Hoare triple {3867#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {3892#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:12,687 INFO L273 TraceCheckUtils]: 35: Hoare triple {3892#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {3773#false} is VALID [2018-11-23 13:03:12,687 INFO L256 TraceCheckUtils]: 36: Hoare triple {3773#false} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {3773#false} is VALID [2018-11-23 13:03:12,688 INFO L273 TraceCheckUtils]: 37: Hoare triple {3773#false} ~cond := #in~cond; {3773#false} is VALID [2018-11-23 13:03:12,688 INFO L273 TraceCheckUtils]: 38: Hoare triple {3773#false} assume 0 == ~cond; {3773#false} is VALID [2018-11-23 13:03:12,688 INFO L273 TraceCheckUtils]: 39: Hoare triple {3773#false} assume !false; {3773#false} is VALID [2018-11-23 13:03:12,691 INFO L134 CoverageAnalysis]: Checked inductivity of 9 backedges. 0 proven. 9 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:12,709 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 13:03:12,709 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [9, 9] total 16 [2018-11-23 13:03:12,710 INFO L78 Accepts]: Start accepts. Automaton has 16 states. Word has length 40 [2018-11-23 13:03:12,710 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:12,710 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 16 states. [2018-11-23 13:03:12,779 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 13:03:12,779 INFO L459 AbstractCegarLoop]: Interpolant automaton has 16 states [2018-11-23 13:03:12,779 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 16 interpolants. [2018-11-23 13:03:12,780 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=64, Invalid=176, Unknown=0, NotChecked=0, Total=240 [2018-11-23 13:03:12,780 INFO L87 Difference]: Start difference. First operand 102 states and 124 transitions. Second operand 16 states. [2018-11-23 13:03:14,311 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:14,311 INFO L93 Difference]: Finished difference Result 221 states and 276 transitions. [2018-11-23 13:03:14,311 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 12 states. [2018-11-23 13:03:14,311 INFO L78 Accepts]: Start accepts. Automaton has 16 states. Word has length 40 [2018-11-23 13:03:14,312 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:14,312 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 16 states. [2018-11-23 13:03:14,315 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 12 states to 12 states and 205 transitions. [2018-11-23 13:03:14,315 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 16 states. [2018-11-23 13:03:14,317 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 12 states to 12 states and 205 transitions. [2018-11-23 13:03:14,317 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 12 states and 205 transitions. [2018-11-23 13:03:14,660 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 205 edges. 205 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:14,665 INFO L225 Difference]: With dead ends: 221 [2018-11-23 13:03:14,665 INFO L226 Difference]: Without dead ends: 171 [2018-11-23 13:03:14,666 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 55 GetRequests, 34 SyntacticMatches, 0 SemanticMatches, 21 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 84 ImplicationChecksByTransitivity, 0.3s TimeCoverageRelationStatistics Valid=137, Invalid=369, Unknown=0, NotChecked=0, Total=506 [2018-11-23 13:03:14,666 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 171 states. [2018-11-23 13:03:14,717 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 171 to 126. [2018-11-23 13:03:14,717 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:14,717 INFO L82 GeneralOperation]: Start isEquivalent. First operand 171 states. Second operand 126 states. [2018-11-23 13:03:14,718 INFO L74 IsIncluded]: Start isIncluded. First operand 171 states. Second operand 126 states. [2018-11-23 13:03:14,718 INFO L87 Difference]: Start difference. First operand 171 states. Second operand 126 states. [2018-11-23 13:03:14,723 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:14,723 INFO L93 Difference]: Finished difference Result 171 states and 210 transitions. [2018-11-23 13:03:14,724 INFO L276 IsEmpty]: Start isEmpty. Operand 171 states and 210 transitions. [2018-11-23 13:03:14,724 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:14,725 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:14,725 INFO L74 IsIncluded]: Start isIncluded. First operand 126 states. Second operand 171 states. [2018-11-23 13:03:14,725 INFO L87 Difference]: Start difference. First operand 126 states. Second operand 171 states. [2018-11-23 13:03:14,730 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:14,730 INFO L93 Difference]: Finished difference Result 171 states and 210 transitions. [2018-11-23 13:03:14,731 INFO L276 IsEmpty]: Start isEmpty. Operand 171 states and 210 transitions. [2018-11-23 13:03:14,731 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:14,732 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:14,732 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:14,732 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:14,732 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 126 states. [2018-11-23 13:03:14,735 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 126 states to 126 states and 156 transitions. [2018-11-23 13:03:14,736 INFO L78 Accepts]: Start accepts. Automaton has 126 states and 156 transitions. Word has length 40 [2018-11-23 13:03:14,736 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:14,736 INFO L480 AbstractCegarLoop]: Abstraction has 126 states and 156 transitions. [2018-11-23 13:03:14,736 INFO L481 AbstractCegarLoop]: Interpolant automaton has 16 states. [2018-11-23 13:03:14,736 INFO L276 IsEmpty]: Start isEmpty. Operand 126 states and 156 transitions. [2018-11-23 13:03:14,737 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 41 [2018-11-23 13:03:14,737 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:14,737 INFO L402 BasicCegarLoop]: trace histogram [3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 13:03:14,738 INFO L423 AbstractCegarLoop]: === Iteration 11 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:14,738 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:14,738 INFO L82 PathProgramCache]: Analyzing trace with hash 80209260, now seen corresponding path program 1 times [2018-11-23 13:03:14,738 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:14,738 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:14,739 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:14,739 INFO L101 rtionOrderModulation]: Changing assertion order to NOT_INCREMENTALLY [2018-11-23 13:03:14,740 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:14,753 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:15,869 INFO L256 TraceCheckUtils]: 0: Hoare triple {4675#true} call ULTIMATE.init(); {4675#true} is VALID [2018-11-23 13:03:15,870 INFO L273 TraceCheckUtils]: 1: Hoare triple {4675#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {4675#true} is VALID [2018-11-23 13:03:15,870 INFO L273 TraceCheckUtils]: 2: Hoare triple {4675#true} assume true; {4675#true} is VALID [2018-11-23 13:03:15,870 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {4675#true} {4675#true} #125#return; {4675#true} is VALID [2018-11-23 13:03:15,871 INFO L256 TraceCheckUtils]: 4: Hoare triple {4675#true} call #t~ret20 := main(); {4675#true} is VALID [2018-11-23 13:03:15,871 INFO L273 TraceCheckUtils]: 5: Hoare triple {4675#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {4675#true} is VALID [2018-11-23 13:03:15,871 INFO L256 TraceCheckUtils]: 6: Hoare triple {4675#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {4675#true} is VALID [2018-11-23 13:03:15,872 INFO L273 TraceCheckUtils]: 7: Hoare triple {4675#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {4677#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,873 INFO L273 TraceCheckUtils]: 8: Hoare triple {4677#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} assume !(~str.base == 0 && ~str.offset == 0); {4677#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,874 INFO L273 TraceCheckUtils]: 9: Hoare triple {4677#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,874 INFO L273 TraceCheckUtils]: 10: Hoare triple {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !#t~switch3; {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,875 INFO L273 TraceCheckUtils]: 11: Hoare triple {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} havoc #t~switch3;havoc #t~mem2; {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,876 INFO L273 TraceCheckUtils]: 12: Hoare triple {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,876 INFO L273 TraceCheckUtils]: 13: Hoare triple {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !!(0 != #t~mem0);havoc #t~mem0; {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,878 INFO L273 TraceCheckUtils]: 14: Hoare triple {4678#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,878 INFO L273 TraceCheckUtils]: 15: Hoare triple {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} assume !#t~switch3; {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,879 INFO L273 TraceCheckUtils]: 16: Hoare triple {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} havoc #t~switch3;havoc #t~mem2; {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,880 INFO L273 TraceCheckUtils]: 17: Hoare triple {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,881 INFO L273 TraceCheckUtils]: 18: Hoare triple {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} assume !!(0 != #t~mem0);havoc #t~mem0; {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:15,882 INFO L273 TraceCheckUtils]: 19: Hoare triple {4679#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:15,883 INFO L273 TraceCheckUtils]: 20: Hoare triple {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume #t~switch3; {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:15,884 INFO L273 TraceCheckUtils]: 21: Hoare triple {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:15,885 INFO L273 TraceCheckUtils]: 22: Hoare triple {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:15,885 INFO L273 TraceCheckUtils]: 23: Hoare triple {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:15,886 INFO L273 TraceCheckUtils]: 24: Hoare triple {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:15,887 INFO L273 TraceCheckUtils]: 25: Hoare triple {4680#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {4681#(<= parse_expression_list_~i~0 (+ parse_expression_list_~start~0 1))} is VALID [2018-11-23 13:03:15,888 INFO L273 TraceCheckUtils]: 26: Hoare triple {4681#(<= parse_expression_list_~i~0 (+ parse_expression_list_~start~0 1))} ~j~0 := ~i~0 - 1; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,889 INFO L273 TraceCheckUtils]: 27: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} #t~short13 := 0 < ~j~0; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,889 INFO L273 TraceCheckUtils]: 28: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,890 INFO L273 TraceCheckUtils]: 29: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,890 INFO L273 TraceCheckUtils]: 30: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} #t~short13 := #t~short12; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,891 INFO L273 TraceCheckUtils]: 31: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,892 INFO L273 TraceCheckUtils]: 32: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} #t~short16 := 0 < ~j~0; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,892 INFO L273 TraceCheckUtils]: 33: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,893 INFO L273 TraceCheckUtils]: 34: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume !#t~short16;havoc #t~mem15;havoc #t~short16; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,893 INFO L273 TraceCheckUtils]: 35: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} is VALID [2018-11-23 13:03:15,895 INFO L256 TraceCheckUtils]: 36: Hoare triple {4682#(<= parse_expression_list_~j~0 parse_expression_list_~start~0)} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {4683#(= |__VERIFIER_assert_#in~cond| 1)} is VALID [2018-11-23 13:03:15,895 INFO L273 TraceCheckUtils]: 37: Hoare triple {4683#(= |__VERIFIER_assert_#in~cond| 1)} ~cond := #in~cond; {4684#(= __VERIFIER_assert_~cond 1)} is VALID [2018-11-23 13:03:15,896 INFO L273 TraceCheckUtils]: 38: Hoare triple {4684#(= __VERIFIER_assert_~cond 1)} assume 0 == ~cond; {4676#false} is VALID [2018-11-23 13:03:15,896 INFO L273 TraceCheckUtils]: 39: Hoare triple {4676#false} assume !false; {4676#false} is VALID [2018-11-23 13:03:15,901 INFO L134 CoverageAnalysis]: Checked inductivity of 9 backedges. 0 proven. 9 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:15,901 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 13:03:15,901 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/z3 Starting monitored process 4 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 4 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 13:03:15,910 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:15,948 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:15,963 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:15,965 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 13:03:16,212 INFO L256 TraceCheckUtils]: 0: Hoare triple {4675#true} call ULTIMATE.init(); {4675#true} is VALID [2018-11-23 13:03:16,212 INFO L273 TraceCheckUtils]: 1: Hoare triple {4675#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {4675#true} is VALID [2018-11-23 13:03:16,212 INFO L273 TraceCheckUtils]: 2: Hoare triple {4675#true} assume true; {4675#true} is VALID [2018-11-23 13:03:16,212 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {4675#true} {4675#true} #125#return; {4675#true} is VALID [2018-11-23 13:03:16,213 INFO L256 TraceCheckUtils]: 4: Hoare triple {4675#true} call #t~ret20 := main(); {4675#true} is VALID [2018-11-23 13:03:16,213 INFO L273 TraceCheckUtils]: 5: Hoare triple {4675#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {4675#true} is VALID [2018-11-23 13:03:16,213 INFO L256 TraceCheckUtils]: 6: Hoare triple {4675#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {4675#true} is VALID [2018-11-23 13:03:16,214 INFO L273 TraceCheckUtils]: 7: Hoare triple {4675#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {4709#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,214 INFO L273 TraceCheckUtils]: 8: Hoare triple {4709#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} assume !(~str.base == 0 && ~str.offset == 0); {4709#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,215 INFO L273 TraceCheckUtils]: 9: Hoare triple {4709#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,215 INFO L273 TraceCheckUtils]: 10: Hoare triple {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} assume !#t~switch3; {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,216 INFO L273 TraceCheckUtils]: 11: Hoare triple {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} havoc #t~switch3;havoc #t~mem2; {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,216 INFO L273 TraceCheckUtils]: 12: Hoare triple {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,217 INFO L273 TraceCheckUtils]: 13: Hoare triple {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} assume !!(0 != #t~mem0);havoc #t~mem0; {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,218 INFO L273 TraceCheckUtils]: 14: Hoare triple {4716#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,219 INFO L273 TraceCheckUtils]: 15: Hoare triple {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} assume !#t~switch3; {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,220 INFO L273 TraceCheckUtils]: 16: Hoare triple {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} havoc #t~switch3;havoc #t~mem2; {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,220 INFO L273 TraceCheckUtils]: 17: Hoare triple {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,226 INFO L273 TraceCheckUtils]: 18: Hoare triple {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} assume !!(0 != #t~mem0);havoc #t~mem0; {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:16,227 INFO L273 TraceCheckUtils]: 19: Hoare triple {4732#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:16,227 INFO L273 TraceCheckUtils]: 20: Hoare triple {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume #t~switch3; {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:16,228 INFO L273 TraceCheckUtils]: 21: Hoare triple {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:16,228 INFO L273 TraceCheckUtils]: 22: Hoare triple {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:16,229 INFO L273 TraceCheckUtils]: 23: Hoare triple {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:16,229 INFO L273 TraceCheckUtils]: 24: Hoare triple {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:16,230 INFO L273 TraceCheckUtils]: 25: Hoare triple {4748#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume 34 == #t~mem8;havoc #t~mem8;#t~post9 := ~start~0;~start~0 := 1 + #t~post9;havoc #t~post9; {4767#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:16,231 INFO L273 TraceCheckUtils]: 26: Hoare triple {4767#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} ~j~0 := ~i~0 - 1; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,232 INFO L273 TraceCheckUtils]: 27: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} #t~short13 := 0 < ~j~0; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,233 INFO L273 TraceCheckUtils]: 28: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,234 INFO L273 TraceCheckUtils]: 29: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,235 INFO L273 TraceCheckUtils]: 30: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} #t~short13 := #t~short12; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,235 INFO L273 TraceCheckUtils]: 31: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,236 INFO L273 TraceCheckUtils]: 32: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} #t~short16 := 0 < ~j~0; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,237 INFO L273 TraceCheckUtils]: 33: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,238 INFO L273 TraceCheckUtils]: 34: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume !#t~short16;havoc #t~mem15;havoc #t~short16; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,239 INFO L273 TraceCheckUtils]: 35: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} is VALID [2018-11-23 13:03:16,240 INFO L256 TraceCheckUtils]: 36: Hoare triple {4771#(and (<= 1 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 1))} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {4683#(= |__VERIFIER_assert_#in~cond| 1)} is VALID [2018-11-23 13:03:16,241 INFO L273 TraceCheckUtils]: 37: Hoare triple {4683#(= |__VERIFIER_assert_#in~cond| 1)} ~cond := #in~cond; {4684#(= __VERIFIER_assert_~cond 1)} is VALID [2018-11-23 13:03:16,241 INFO L273 TraceCheckUtils]: 38: Hoare triple {4684#(= __VERIFIER_assert_~cond 1)} assume 0 == ~cond; {4676#false} is VALID [2018-11-23 13:03:16,242 INFO L273 TraceCheckUtils]: 39: Hoare triple {4676#false} assume !false; {4676#false} is VALID [2018-11-23 13:03:16,246 INFO L134 CoverageAnalysis]: Checked inductivity of 9 backedges. 0 proven. 9 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:16,265 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 13:03:16,265 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [10, 10] total 16 [2018-11-23 13:03:16,265 INFO L78 Accepts]: Start accepts. Automaton has 16 states. Word has length 40 [2018-11-23 13:03:16,266 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:16,266 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 16 states. [2018-11-23 13:03:16,340 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 13:03:16,340 INFO L459 AbstractCegarLoop]: Interpolant automaton has 16 states [2018-11-23 13:03:16,340 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 16 interpolants. [2018-11-23 13:03:16,340 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=60, Invalid=180, Unknown=0, NotChecked=0, Total=240 [2018-11-23 13:03:16,341 INFO L87 Difference]: Start difference. First operand 126 states and 156 transitions. Second operand 16 states. [2018-11-23 13:03:18,256 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:18,256 INFO L93 Difference]: Finished difference Result 180 states and 217 transitions. [2018-11-23 13:03:18,256 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 12 states. [2018-11-23 13:03:18,257 INFO L78 Accepts]: Start accepts. Automaton has 16 states. Word has length 40 [2018-11-23 13:03:18,257 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:18,257 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 16 states. [2018-11-23 13:03:18,259 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 12 states to 12 states and 156 transitions. [2018-11-23 13:03:18,259 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 16 states. [2018-11-23 13:03:18,261 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 12 states to 12 states and 156 transitions. [2018-11-23 13:03:18,261 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 12 states and 156 transitions. [2018-11-23 13:03:18,532 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 156 edges. 156 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:18,535 INFO L225 Difference]: With dead ends: 180 [2018-11-23 13:03:18,535 INFO L226 Difference]: Without dead ends: 178 [2018-11-23 13:03:18,535 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 55 GetRequests, 34 SyntacticMatches, 1 SemanticMatches, 20 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 77 ImplicationChecksByTransitivity, 1.0s TimeCoverageRelationStatistics Valid=112, Invalid=350, Unknown=0, NotChecked=0, Total=462 [2018-11-23 13:03:18,536 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 178 states. [2018-11-23 13:03:18,595 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 178 to 126. [2018-11-23 13:03:18,595 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:18,596 INFO L82 GeneralOperation]: Start isEquivalent. First operand 178 states. Second operand 126 states. [2018-11-23 13:03:18,596 INFO L74 IsIncluded]: Start isIncluded. First operand 178 states. Second operand 126 states. [2018-11-23 13:03:18,596 INFO L87 Difference]: Start difference. First operand 178 states. Second operand 126 states. [2018-11-23 13:03:18,600 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:18,601 INFO L93 Difference]: Finished difference Result 178 states and 215 transitions. [2018-11-23 13:03:18,601 INFO L276 IsEmpty]: Start isEmpty. Operand 178 states and 215 transitions. [2018-11-23 13:03:18,602 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:18,602 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:18,602 INFO L74 IsIncluded]: Start isIncluded. First operand 126 states. Second operand 178 states. [2018-11-23 13:03:18,602 INFO L87 Difference]: Start difference. First operand 126 states. Second operand 178 states. [2018-11-23 13:03:18,607 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:18,607 INFO L93 Difference]: Finished difference Result 178 states and 215 transitions. [2018-11-23 13:03:18,607 INFO L276 IsEmpty]: Start isEmpty. Operand 178 states and 215 transitions. [2018-11-23 13:03:18,608 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:18,608 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:18,608 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:18,608 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:18,608 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 126 states. [2018-11-23 13:03:18,611 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 126 states to 126 states and 156 transitions. [2018-11-23 13:03:18,611 INFO L78 Accepts]: Start accepts. Automaton has 126 states and 156 transitions. Word has length 40 [2018-11-23 13:03:18,612 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:18,612 INFO L480 AbstractCegarLoop]: Abstraction has 126 states and 156 transitions. [2018-11-23 13:03:18,612 INFO L481 AbstractCegarLoop]: Interpolant automaton has 16 states. [2018-11-23 13:03:18,612 INFO L276 IsEmpty]: Start isEmpty. Operand 126 states and 156 transitions. [2018-11-23 13:03:18,613 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 41 [2018-11-23 13:03:18,613 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:18,613 INFO L402 BasicCegarLoop]: trace histogram [3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 13:03:18,613 INFO L423 AbstractCegarLoop]: === Iteration 12 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:18,613 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:18,614 INFO L82 PathProgramCache]: Analyzing trace with hash -1256912720, now seen corresponding path program 1 times [2018-11-23 13:03:18,614 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:18,614 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:18,615 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:18,615 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:18,615 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:18,626 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:19,726 INFO L256 TraceCheckUtils]: 0: Hoare triple {5545#true} call ULTIMATE.init(); {5545#true} is VALID [2018-11-23 13:03:19,727 INFO L273 TraceCheckUtils]: 1: Hoare triple {5545#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {5545#true} is VALID [2018-11-23 13:03:19,727 INFO L273 TraceCheckUtils]: 2: Hoare triple {5545#true} assume true; {5545#true} is VALID [2018-11-23 13:03:19,727 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {5545#true} {5545#true} #125#return; {5545#true} is VALID [2018-11-23 13:03:19,727 INFO L256 TraceCheckUtils]: 4: Hoare triple {5545#true} call #t~ret20 := main(); {5545#true} is VALID [2018-11-23 13:03:19,728 INFO L273 TraceCheckUtils]: 5: Hoare triple {5545#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {5545#true} is VALID [2018-11-23 13:03:19,728 INFO L256 TraceCheckUtils]: 6: Hoare triple {5545#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {5545#true} is VALID [2018-11-23 13:03:19,734 INFO L273 TraceCheckUtils]: 7: Hoare triple {5545#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {5547#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,735 INFO L273 TraceCheckUtils]: 8: Hoare triple {5547#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} assume !(~str.base == 0 && ~str.offset == 0); {5547#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,736 INFO L273 TraceCheckUtils]: 9: Hoare triple {5547#(and (<= (+ parse_expression_list_~i~0 1) 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,736 INFO L273 TraceCheckUtils]: 10: Hoare triple {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !#t~switch3; {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,737 INFO L273 TraceCheckUtils]: 11: Hoare triple {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} havoc #t~switch3;havoc #t~mem2; {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,737 INFO L273 TraceCheckUtils]: 12: Hoare triple {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,737 INFO L273 TraceCheckUtils]: 13: Hoare triple {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} assume !!(0 != #t~mem0);havoc #t~mem0; {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,738 INFO L273 TraceCheckUtils]: 14: Hoare triple {5548#(and (<= parse_expression_list_~i~0 0) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,738 INFO L273 TraceCheckUtils]: 15: Hoare triple {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} assume !#t~switch3; {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,739 INFO L273 TraceCheckUtils]: 16: Hoare triple {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} havoc #t~switch3;havoc #t~mem2; {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,740 INFO L273 TraceCheckUtils]: 17: Hoare triple {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,740 INFO L273 TraceCheckUtils]: 18: Hoare triple {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} assume !!(0 != #t~mem0);havoc #t~mem0; {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,741 INFO L273 TraceCheckUtils]: 19: Hoare triple {5549#(and (<= parse_expression_list_~i~0 1) (= parse_expression_list_~start~0 0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:19,742 INFO L273 TraceCheckUtils]: 20: Hoare triple {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume #t~switch3; {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:19,743 INFO L273 TraceCheckUtils]: 21: Hoare triple {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:19,744 INFO L273 TraceCheckUtils]: 22: Hoare triple {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:19,744 INFO L273 TraceCheckUtils]: 23: Hoare triple {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:19,745 INFO L273 TraceCheckUtils]: 24: Hoare triple {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:19,745 INFO L273 TraceCheckUtils]: 25: Hoare triple {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} assume !(34 == #t~mem8);havoc #t~mem8; {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:19,746 INFO L273 TraceCheckUtils]: 26: Hoare triple {5550#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~i~0 2))} ~j~0 := ~i~0 - 1; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,747 INFO L273 TraceCheckUtils]: 27: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} #t~short13 := 0 < ~j~0; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,748 INFO L273 TraceCheckUtils]: 28: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,749 INFO L273 TraceCheckUtils]: 29: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,749 INFO L273 TraceCheckUtils]: 30: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} #t~short13 := #t~short12; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,750 INFO L273 TraceCheckUtils]: 31: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,751 INFO L273 TraceCheckUtils]: 32: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} #t~short16 := 0 < ~j~0; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,752 INFO L273 TraceCheckUtils]: 33: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} is VALID [2018-11-23 13:03:19,753 INFO L273 TraceCheckUtils]: 34: Hoare triple {5551#(and (<= parse_expression_list_~j~0 1) (= parse_expression_list_~start~0 0))} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {5552#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:19,753 INFO L273 TraceCheckUtils]: 35: Hoare triple {5552#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {5552#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:19,754 INFO L256 TraceCheckUtils]: 36: Hoare triple {5552#(and (= parse_expression_list_~start~0 0) (<= parse_expression_list_~j~0 0))} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {5553#(= |__VERIFIER_assert_#in~cond| 1)} is VALID [2018-11-23 13:03:19,755 INFO L273 TraceCheckUtils]: 37: Hoare triple {5553#(= |__VERIFIER_assert_#in~cond| 1)} ~cond := #in~cond; {5554#(= __VERIFIER_assert_~cond 1)} is VALID [2018-11-23 13:03:19,756 INFO L273 TraceCheckUtils]: 38: Hoare triple {5554#(= __VERIFIER_assert_~cond 1)} assume 0 == ~cond; {5546#false} is VALID [2018-11-23 13:03:19,756 INFO L273 TraceCheckUtils]: 39: Hoare triple {5546#false} assume !false; {5546#false} is VALID [2018-11-23 13:03:19,759 INFO L134 CoverageAnalysis]: Checked inductivity of 9 backedges. 0 proven. 9 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:19,760 INFO L300 seRefinementStrategy]: The current sequences of interpolants are not accepted, trying to find more. [2018-11-23 13:03:19,760 INFO L223 ckRefinementStrategy]: Switched to mode Z3_FP No working directory specified, using /storage/repos/ultimate/releaseScripts/default/UAutomizer-linux/z3 Starting monitored process 5 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 (exit command is (exit), workingDir is null) Waiting until toolchain timeout for monitored process 5 with z3 -smt2 -in SMTLIB2_COMPLIANT=true -t:12000 [2018-11-23 13:03:19,770 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:19,804 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:19,834 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is unsat [2018-11-23 13:03:19,836 INFO L273 TraceCheckSpWp]: Computing forward predicates... [2018-11-23 13:03:20,124 INFO L256 TraceCheckUtils]: 0: Hoare triple {5545#true} call ULTIMATE.init(); {5545#true} is VALID [2018-11-23 13:03:20,125 INFO L273 TraceCheckUtils]: 1: Hoare triple {5545#true} #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; {5545#true} is VALID [2018-11-23 13:03:20,125 INFO L273 TraceCheckUtils]: 2: Hoare triple {5545#true} assume true; {5545#true} is VALID [2018-11-23 13:03:20,125 INFO L268 TraceCheckUtils]: 3: Hoare quadruple {5545#true} {5545#true} #125#return; {5545#true} is VALID [2018-11-23 13:03:20,125 INFO L256 TraceCheckUtils]: 4: Hoare triple {5545#true} call #t~ret20 := main(); {5545#true} is VALID [2018-11-23 13:03:20,125 INFO L273 TraceCheckUtils]: 5: Hoare triple {5545#true} call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); {5545#true} is VALID [2018-11-23 13:03:20,126 INFO L256 TraceCheckUtils]: 6: Hoare triple {5545#true} call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); {5545#true} is VALID [2018-11-23 13:03:20,127 INFO L273 TraceCheckUtils]: 7: Hoare triple {5545#true} ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); {5579#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,139 INFO L273 TraceCheckUtils]: 8: Hoare triple {5579#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} assume !(~str.base == 0 && ~str.offset == 0); {5579#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,140 INFO L273 TraceCheckUtils]: 9: Hoare triple {5579#(and (<= (+ parse_expression_list_~i~0 1) 0) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,140 INFO L273 TraceCheckUtils]: 10: Hoare triple {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} assume !#t~switch3; {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,140 INFO L273 TraceCheckUtils]: 11: Hoare triple {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} havoc #t~switch3;havoc #t~mem2; {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,141 INFO L273 TraceCheckUtils]: 12: Hoare triple {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,141 INFO L273 TraceCheckUtils]: 13: Hoare triple {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} assume !!(0 != #t~mem0);havoc #t~mem0; {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,142 INFO L273 TraceCheckUtils]: 14: Hoare triple {5586#(and (<= parse_expression_list_~i~0 0) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,142 INFO L273 TraceCheckUtils]: 15: Hoare triple {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} assume !#t~switch3; {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,143 INFO L273 TraceCheckUtils]: 16: Hoare triple {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} havoc #t~switch3;havoc #t~mem2; {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,143 INFO L273 TraceCheckUtils]: 17: Hoare triple {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,144 INFO L273 TraceCheckUtils]: 18: Hoare triple {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} assume !!(0 != #t~mem0);havoc #t~mem0; {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,145 INFO L273 TraceCheckUtils]: 19: Hoare triple {5602#(and (<= parse_expression_list_~i~0 1) (<= 0 parse_expression_list_~start~0))} #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:20,146 INFO L273 TraceCheckUtils]: 20: Hoare triple {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume #t~switch3; {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:20,146 INFO L273 TraceCheckUtils]: 21: Hoare triple {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:20,147 INFO L273 TraceCheckUtils]: 22: Hoare triple {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:20,148 INFO L273 TraceCheckUtils]: 23: Hoare triple {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:20,149 INFO L273 TraceCheckUtils]: 24: Hoare triple {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:20,149 INFO L273 TraceCheckUtils]: 25: Hoare triple {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} assume !(34 == #t~mem8);havoc #t~mem8; {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} is VALID [2018-11-23 13:03:20,150 INFO L273 TraceCheckUtils]: 26: Hoare triple {5618#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~i~0 2))} ~j~0 := ~i~0 - 1; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,151 INFO L273 TraceCheckUtils]: 27: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} #t~short13 := 0 < ~j~0; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,152 INFO L273 TraceCheckUtils]: 28: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,153 INFO L273 TraceCheckUtils]: 29: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,153 INFO L273 TraceCheckUtils]: 30: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} #t~short13 := #t~short12; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,154 INFO L273 TraceCheckUtils]: 31: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,155 INFO L273 TraceCheckUtils]: 32: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} #t~short16 := 0 < ~j~0; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,156 INFO L273 TraceCheckUtils]: 33: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} is VALID [2018-11-23 13:03:20,157 INFO L273 TraceCheckUtils]: 34: Hoare triple {5640#(and (<= parse_expression_list_~j~0 1) (<= 0 parse_expression_list_~start~0))} assume #t~short16;havoc #t~mem15;havoc #t~short16;#t~post17 := ~j~0;~j~0 := #t~post17 - 1;havoc #t~post17; {5665#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:20,157 INFO L273 TraceCheckUtils]: 35: Hoare triple {5665#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; {5665#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} is VALID [2018-11-23 13:03:20,159 INFO L256 TraceCheckUtils]: 36: Hoare triple {5665#(and (<= 0 parse_expression_list_~start~0) (<= parse_expression_list_~j~0 0))} call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); {5553#(= |__VERIFIER_assert_#in~cond| 1)} is VALID [2018-11-23 13:03:20,159 INFO L273 TraceCheckUtils]: 37: Hoare triple {5553#(= |__VERIFIER_assert_#in~cond| 1)} ~cond := #in~cond; {5554#(= __VERIFIER_assert_~cond 1)} is VALID [2018-11-23 13:03:20,160 INFO L273 TraceCheckUtils]: 38: Hoare triple {5554#(= __VERIFIER_assert_~cond 1)} assume 0 == ~cond; {5546#false} is VALID [2018-11-23 13:03:20,160 INFO L273 TraceCheckUtils]: 39: Hoare triple {5546#false} assume !false; {5546#false} is VALID [2018-11-23 13:03:20,163 INFO L134 CoverageAnalysis]: Checked inductivity of 9 backedges. 0 proven. 9 refuted. 0 times theorem prover too weak. 0 trivial. 0 not checked. [2018-11-23 13:03:20,183 INFO L312 seRefinementStrategy]: Constructing automaton from 0 perfect and 2 imperfect interpolant sequences. [2018-11-23 13:03:20,183 INFO L327 seRefinementStrategy]: Number of different interpolants: perfect sequences [] imperfect sequences [10, 10] total 16 [2018-11-23 13:03:20,183 INFO L78 Accepts]: Start accepts. Automaton has 16 states. Word has length 40 [2018-11-23 13:03:20,184 INFO L84 Accepts]: Finished accepts. word is accepted. [2018-11-23 13:03:20,184 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 16 states. [2018-11-23 13:03:20,261 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 13:03:20,261 INFO L459 AbstractCegarLoop]: Interpolant automaton has 16 states [2018-11-23 13:03:20,261 INFO L142 InterpolantAutomaton]: Constructing interpolant automaton starting with 16 interpolants. [2018-11-23 13:03:20,261 INFO L144 InterpolantAutomaton]: CoverageRelationStatistics Valid=56, Invalid=184, Unknown=0, NotChecked=0, Total=240 [2018-11-23 13:03:20,261 INFO L87 Difference]: Start difference. First operand 126 states and 156 transitions. Second operand 16 states. [2018-11-23 13:03:22,000 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:22,000 INFO L93 Difference]: Finished difference Result 198 states and 242 transitions. [2018-11-23 13:03:22,000 INFO L142 InterpolantAutomaton]: Switched to read-only mode: deterministic interpolant automaton has 13 states. [2018-11-23 13:03:22,000 INFO L78 Accepts]: Start accepts. Automaton has 16 states. Word has length 40 [2018-11-23 13:03:22,001 INFO L84 Accepts]: Finished accepts. some prefix is accepted. [2018-11-23 13:03:22,001 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 16 states. [2018-11-23 13:03:22,003 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 13 states to 13 states and 179 transitions. [2018-11-23 13:03:22,003 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 16 states. [2018-11-23 13:03:22,005 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 13 states to 13 states and 179 transitions. [2018-11-23 13:03:22,005 INFO L86 InductivityCheck]: Starting indutivity check of a Floyd-Hoare automaton with 13 states and 179 transitions. [2018-11-23 13:03:22,621 INFO L119 InductivityCheck]: Floyd-Hoare automaton has 179 edges. 179 inductive. 0 not inductive. 0 times theorem prover too weak to decide inductivity. [2018-11-23 13:03:22,625 INFO L225 Difference]: With dead ends: 198 [2018-11-23 13:03:22,625 INFO L226 Difference]: Without dead ends: 196 [2018-11-23 13:03:22,626 INFO L631 BasicCegarLoop]: 0 DeclaredPredicates, 57 GetRequests, 34 SyntacticMatches, 1 SemanticMatches, 22 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 80 ImplicationChecksByTransitivity, 1.0s TimeCoverageRelationStatistics Valid=139, Invalid=413, Unknown=0, NotChecked=0, Total=552 [2018-11-23 13:03:22,627 INFO L82 GeneralOperation]: Start minimizeSevpa. Operand 196 states. [2018-11-23 13:03:22,680 INFO L88 GeneralOperation]: Finished minimizeSevpa. Reduced states from 196 to 145. [2018-11-23 13:03:22,680 INFO L214 AbstractMinimizeNwa]: Start testing correctness of minimizeSevpa [2018-11-23 13:03:22,681 INFO L82 GeneralOperation]: Start isEquivalent. First operand 196 states. Second operand 145 states. [2018-11-23 13:03:22,681 INFO L74 IsIncluded]: Start isIncluded. First operand 196 states. Second operand 145 states. [2018-11-23 13:03:22,681 INFO L87 Difference]: Start difference. First operand 196 states. Second operand 145 states. [2018-11-23 13:03:22,687 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:22,687 INFO L93 Difference]: Finished difference Result 196 states and 240 transitions. [2018-11-23 13:03:22,688 INFO L276 IsEmpty]: Start isEmpty. Operand 196 states and 240 transitions. [2018-11-23 13:03:22,688 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:22,688 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:22,689 INFO L74 IsIncluded]: Start isIncluded. First operand 145 states. Second operand 196 states. [2018-11-23 13:03:22,689 INFO L87 Difference]: Start difference. First operand 145 states. Second operand 196 states. [2018-11-23 13:03:22,694 INFO L144 Difference]: Subtrahend was deterministic. Have not used determinization. [2018-11-23 13:03:22,694 INFO L93 Difference]: Finished difference Result 196 states and 240 transitions. [2018-11-23 13:03:22,694 INFO L276 IsEmpty]: Start isEmpty. Operand 196 states and 240 transitions. [2018-11-23 13:03:22,695 INFO L282 IsEmpty]: Finished isEmpty. No accepting run. [2018-11-23 13:03:22,695 INFO L83 IsIncluded]: Finished isIncluded. Language is included [2018-11-23 13:03:22,695 INFO L88 GeneralOperation]: Finished isEquivalent. [2018-11-23 13:03:22,695 INFO L221 AbstractMinimizeNwa]: Finished testing correctness of minimizeSevpa [2018-11-23 13:03:22,696 INFO L82 GeneralOperation]: Start removeUnreachable. Operand 145 states. [2018-11-23 13:03:22,698 INFO L88 GeneralOperation]: Finished removeUnreachable. Reduced from 145 states to 145 states and 185 transitions. [2018-11-23 13:03:22,699 INFO L78 Accepts]: Start accepts. Automaton has 145 states and 185 transitions. Word has length 40 [2018-11-23 13:03:22,699 INFO L84 Accepts]: Finished accepts. word is rejected. [2018-11-23 13:03:22,699 INFO L480 AbstractCegarLoop]: Abstraction has 145 states and 185 transitions. [2018-11-23 13:03:22,699 INFO L481 AbstractCegarLoop]: Interpolant automaton has 16 states. [2018-11-23 13:03:22,699 INFO L276 IsEmpty]: Start isEmpty. Operand 145 states and 185 transitions. [2018-11-23 13:03:22,700 INFO L282 IsEmpty]: Finished isEmpty. Found accepting run of length 41 [2018-11-23 13:03:22,700 INFO L394 BasicCegarLoop]: Found error trace [2018-11-23 13:03:22,700 INFO L402 BasicCegarLoop]: trace histogram [3, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] [2018-11-23 13:03:22,700 INFO L423 AbstractCegarLoop]: === Iteration 13 === [__VERIFIER_assertErr0ASSERT_VIOLATIONERROR_FUNCTION]=== [2018-11-23 13:03:22,701 INFO L141 PredicateUnifier]: Initialized classic predicate unifier [2018-11-23 13:03:22,701 INFO L82 PathProgramCache]: Analyzing trace with hash -1199654418, now seen corresponding path program 1 times [2018-11-23 13:03:22,701 INFO L223 ckRefinementStrategy]: Switched to mode SMTINTERPOL_TREE_INTERPOLANTS [2018-11-23 13:03:22,701 INFO L69 tionRefinementEngine]: Using refinement strategy CamelRefinementStrategy [2018-11-23 13:03:22,702 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:22,702 INFO L103 rtionOrderModulation]: Keeping assertion order NOT_INCREMENTALLY [2018-11-23 13:03:22,702 INFO L119 rtionOrderModulation]: Craig_TreeInterpolation forces the order to NOT_INCREMENTALLY [2018-11-23 13:03:22,718 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 13:03:22,732 INFO L136 AnnotateAndAsserter]: Conjunction of SSA is sat [2018-11-23 13:03:22,761 INFO L469 BasicCegarLoop]: Counterexample might be feasible ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder.RCFGBacktranslator [?] CALL call ULTIMATE.init(); VAL [|#NULL.base|=38, |#NULL.offset|=35, |old(#NULL.base)|=38, |old(#NULL.offset)|=35] [?] #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=38, |old(#NULL.offset)|=35] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=38, |old(#NULL.offset)|=35] [?] RET #125#return; VAL [|#NULL.base|=0, |#NULL.offset|=0] [?] CALL call #t~ret20 := main(); VAL [|#NULL.base|=0, |#NULL.offset|=0] [?] call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); VAL [|#NULL.base|=0, |#NULL.offset|=0, |main_~#A~0.base|=39, |main_~#A~0.offset|=0] [?] CALL call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); VAL [|#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0] [?] ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); VAL [parse_expression_list_~i~0=(- 1), parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !(~str.base == 0 && ~str.offset == 0); VAL [parse_expression_list_~i~0=(- 1), parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=1, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~switch3; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=1, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] havoc #t~switch3;havoc #t~mem2; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem0|=1, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !!(0 != #t~mem0);havoc #t~mem0; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=36, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~switch3; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=36, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] havoc #t~switch3;havoc #t~mem2; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem0|=36, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !!(0 != #t~mem0);havoc #t~mem0; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume #t~switch3; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~mem4|=1, |parse_expression_list_#t~short6|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~mem4|=1, |parse_expression_list_#t~mem5|=1, |parse_expression_list_#t~short6|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~mem8|=1, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !(34 == #t~mem8);havoc #t~mem8; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] ~j~0 := ~i~0 - 1; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~short13 := 0 < ~j~0; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short13|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem10|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short12|=false, |parse_expression_list_#t~short13|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem10|=36, |parse_expression_list_#t~mem11|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short12|=false, |parse_expression_list_#t~short13|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~short13 := #t~short12; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem10|=36, |parse_expression_list_#t~mem11|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short12|=false, |parse_expression_list_#t~short13|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~short16 := 0 < ~j~0; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short16|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem15|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short16|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short16;havoc #t~mem15;havoc #t~short16; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [|#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] ~cond := #in~cond; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] assume 0 == ~cond; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] assume !false; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=38, #NULL.offset=35, old(#NULL.base)=38, old(#NULL.offset)=35] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL.base=0, #NULL.offset=0] [L75] call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9); [L76] call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); VAL [#NULL.base=0, #NULL.offset=0, ~#A~0.base=39, ~#A~0.offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0] [L47-L72] ~str.base, ~str.offset := #in~str.base, #in~str.offset; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L51] assume !(~str.base == 0 && ~str.offset == 0); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=1, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=36, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume #t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] assume !(34 == #t~mem8); [L57] havoc #t~mem8; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume #t~short13; [L59] call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short12; [L59] call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short13; [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume #t~short16; [L60] call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume !#t~short16; [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L61-L67] assume ~start~0 <= ~j~0; [L62] call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18.base, #t~ret18.offset; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L4-L6] assume 0 == ~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=38, #NULL.offset=35, old(#NULL.base)=38, old(#NULL.offset)=35] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL.base=0, #NULL.offset=0] [L75] call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9); [L76] call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); VAL [#NULL.base=0, #NULL.offset=0, ~#A~0.base=39, ~#A~0.offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0] [L47-L72] ~str.base, ~str.offset := #in~str.base, #in~str.offset; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L51] assume !(~str.base == 0 && ~str.offset == 0); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=1, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=36, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume #t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] assume !(34 == #t~mem8); [L57] havoc #t~mem8; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume #t~short13; [L59] call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short12; [L59] call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short13; [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume #t~short16; [L60] call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume !#t~short16; [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L61-L67] assume ~start~0 <= ~j~0; [L62] call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18.base, #t~ret18.offset; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L4-L6] assume 0 == ~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] ----- [2018-11-23 13:03:22,850 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,855 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,857 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,858 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,858 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,860 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,861 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,861 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,861 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L75] char A [2 + 2 + 4 +1]; [L76] A[2 + 2 + 4] = 0 VAL [A={39:0}] [L77] CALL parse_expression_list (A) VAL [str={39:0}] [L49] int start=0, i=-1, j=-1; [L50] char str2[2]; VAL [i=-1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}] [L51] COND FALSE !(!str) VAL [i=-1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}] [L53] i++ [L54] str[i] [L55] case 0: VAL [i=0, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=1] [L70] EXPR str[i] VAL [i=0, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=1] [L70] COND TRUE str[i] != 0 [L53] i++ [L54] str[i] [L55] case 0: VAL [i=1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=36] [L70] EXPR str[i] VAL [i=1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=36] [L70] COND TRUE str[i] != 0 [L53] i++ [L54] str[i] [L55] case 0: VAL [i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0] [L56] EXPR str[start] [L56] (str[start] == ' ') || (str[start] == '\t') [L56] EXPR str[start] [L56] (str[start] == ' ') || (str[start] == '\t') VAL [(str[start] == ' ') || (str[start] == '\t')=0, i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[start]=1, str[start]=1] [L56] COND FALSE !((str[start] == ' ') || (str[start] == '\t')) [L57] EXPR str[start] VAL [i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[start]=1] [L57] COND FALSE !(str[start] == '"') [L58] j = i-1 VAL [i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0] [L59] (0 < j) && ((str[j] == ' ') || (str[j] == '\t')) [L59] EXPR str[j] [L59] EXPR (str[j] == ' ') || (str[j] == '\t') [L59] EXPR str[j] [L59] EXPR (str[j] == ' ') || (str[j] == '\t') VAL [(0 < j) && ((str[j] == ' ') || (str[j] == '\t'))=1, (str[j] == ' ') || (str[j] == '\t')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36, str[j]=36] [L59] (0 < j) && ((str[j] == ' ') || (str[j] == '\t')) VAL [(0 < j) && ((str[j] == ' ') || (str[j] == '\t'))=0, (str[j] == ' ') || (str[j] == '\t')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36, str[j]=36] [L59] COND FALSE !((0 < j) && ((str[j] == ' ') || (str[j] == '\t'))) [L60] (0 < j) && (str[j] == '"') [L60] EXPR str[j] [L60] (0 < j) && (str[j] == '"') VAL [(0 < j) && (str[j] == '"')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36] [L60] COND FALSE !((0 < j) && (str[j] == '"')) [L61] COND TRUE start<=j [L63] CALL __VERIFIER_assert(j - start + 1 < 2) VAL [\old(cond)=0] [L4] COND TRUE !(cond) VAL [\old(cond)=0, cond=0] [L5] __VERIFIER_error() VAL [\old(cond)=0, cond=0] ----- [2018-11-23 13:03:22,889 WARN L170 areAnnotationChecker]: parse_expression_listENTRY has no Hoare annotation [2018-11-23 13:03:22,889 WARN L170 areAnnotationChecker]: ULTIMATE.initENTRY has no Hoare annotation [2018-11-23 13:03:22,889 WARN L170 areAnnotationChecker]: ULTIMATE.startENTRY has no Hoare annotation [2018-11-23 13:03:22,889 WARN L170 areAnnotationChecker]: ULTIMATE.startENTRY has no Hoare annotation [2018-11-23 13:03:22,889 WARN L170 areAnnotationChecker]: mainENTRY has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: __VERIFIER_assertENTRY has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: L51 has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: L51 has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: ULTIMATE.initFINAL has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: L-1 has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: L-1 has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: L77 has no Hoare annotation [2018-11-23 13:03:22,890 WARN L170 areAnnotationChecker]: L77 has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: L4 has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: L4 has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: parse_expression_listFINAL has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: L52-4 has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: L52-4 has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: ULTIMATE.initEXIT has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: ULTIMATE.startFINAL has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: L77-1 has no Hoare annotation [2018-11-23 13:03:22,891 WARN L170 areAnnotationChecker]: L5 has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: L5 has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: L4-2 has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: parse_expression_listEXIT has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: L55 has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: L55 has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: L52-5 has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: mainFINAL has no Hoare annotation [2018-11-23 13:03:22,892 WARN L170 areAnnotationChecker]: __VERIFIER_assertEXIT has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L56-5 has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L56-5 has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L54 has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: mainEXIT has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L63-1 has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L56-6 has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L56-1 has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L56-1 has no Hoare annotation [2018-11-23 13:03:22,893 WARN L170 areAnnotationChecker]: L52-1 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L61 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L57 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L57 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L56-3 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L56-3 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L52-2 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L52-2 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L57-2 has no Hoare annotation [2018-11-23 13:03:22,895 WARN L170 areAnnotationChecker]: L59-8 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L59-8 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L59-9 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L59-1 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L59-1 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L60 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L60 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L59-2 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L59-2 has no Hoare annotation [2018-11-23 13:03:22,896 WARN L170 areAnnotationChecker]: L59-6 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L59-6 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L60-2 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L60-2 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L59-4 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L60-4 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L60-4 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L63 has no Hoare annotation [2018-11-23 13:03:22,897 WARN L170 areAnnotationChecker]: L63 has no Hoare annotation [2018-11-23 13:03:22,897 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 13:03:22,906 INFO L202 PluginConnector]: Adding new model de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction CFG 23.11 01:03:22 BoogieIcfgContainer [2018-11-23 13:03:22,906 INFO L132 PluginConnector]: ------------------------ END TraceAbstraction---------------------------- [2018-11-23 13:03:22,907 INFO L113 PluginConnector]: ------------------------Witness Printer---------------------------- [2018-11-23 13:03:22,907 INFO L271 PluginConnector]: Initializing Witness Printer... [2018-11-23 13:03:22,907 INFO L276 PluginConnector]: Witness Printer initialized [2018-11-23 13:03:22,908 INFO L185 PluginConnector]: Executing the observer RCFGCatcher from plugin Witness Printer for "de.uni_freiburg.informatik.ultimate.plugins.generator.rcfgbuilder CFG 23.11 01:03:00" (3/4) ... [2018-11-23 13:03:22,914 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|=38, |#NULL.offset|=35, |old(#NULL.base)|=38, |old(#NULL.offset)|=35] [?] #NULL.base, #NULL.offset := 0, 0;#valid := #valid[0 := 0]; VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=38, |old(#NULL.offset)|=35] [?] assume true; VAL [|#NULL.base|=0, |#NULL.offset|=0, |old(#NULL.base)|=38, |old(#NULL.offset)|=35] [?] RET #125#return; VAL [|#NULL.base|=0, |#NULL.offset|=0] [?] CALL call #t~ret20 := main(); VAL [|#NULL.base|=0, |#NULL.offset|=0] [?] call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9);call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); VAL [|#NULL.base|=0, |#NULL.offset|=0, |main_~#A~0.base|=39, |main_~#A~0.offset|=0] [?] CALL call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); VAL [|#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0] [?] ~str.base, ~str.offset := #in~str.base, #in~str.offset;~start~0 := 0;~i~0 := -1;~j~0 := -1;call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); VAL [parse_expression_list_~i~0=(- 1), parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !(~str.base == 0 && ~str.offset == 0); VAL [parse_expression_list_~i~0=(- 1), parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=1, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~switch3; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=1, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] havoc #t~switch3;havoc #t~mem2; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem0|=1, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !!(0 != #t~mem0);havoc #t~mem0; VAL [parse_expression_list_~i~0=0, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=36, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~switch3; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=36, |parse_expression_list_#t~switch3|=false, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] havoc #t~switch3;havoc #t~mem2; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem0|=36, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !!(0 != #t~mem0);havoc #t~mem0; VAL [parse_expression_list_~i~0=1, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~post1 := ~i~0;~i~0 := 1 + #t~post1;havoc #t~post1;call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1);#t~switch3 := 0 == #t~mem2; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume #t~switch3; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 32 == #t~mem4; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~mem4|=1, |parse_expression_list_#t~short6|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short6;call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1);#t~short6 := 9 == #t~mem5; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~mem4|=1, |parse_expression_list_#t~mem5|=1, |parse_expression_list_#t~short6|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short6;havoc #t~mem4;havoc #t~mem5;havoc #t~short6; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~mem8|=1, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !(34 == #t~mem8);havoc #t~mem8; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=(- 1), parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] ~j~0 := ~i~0 - 1; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~short13 := 0 < ~j~0; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short13|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume #t~short13;call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 32 == #t~mem10; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem10|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short12|=false, |parse_expression_list_#t~short13|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short12;call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short12 := 9 == #t~mem11; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem10|=36, |parse_expression_list_#t~mem11|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short12|=false, |parse_expression_list_#t~short13|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~short13 := #t~short12; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem10|=36, |parse_expression_list_#t~mem11|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short12|=false, |parse_expression_list_#t~short13|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short13;havoc #t~mem10;havoc #t~mem11;havoc #t~short12;havoc #t~short13; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] #t~short16 := 0 < ~j~0; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short16|=true, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume #t~short16;call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1);#t~short16 := 34 == #t~mem15; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem15|=36, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~short16|=false, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume !#t~short16;havoc #t~mem15;havoc #t~short16; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] assume ~start~0 <= ~j~0;call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0));havoc #t~ret18.base, #t~ret18.offset; VAL [parse_expression_list_~i~0=2, parse_expression_list_~j~0=1, parse_expression_list_~start~0=0, parse_expression_list_~str.base=39, parse_expression_list_~str.offset=0, |#NULL.base|=0, |#NULL.offset|=0, |parse_expression_list_#in~str.base|=39, |parse_expression_list_#in~str.offset|=0, |parse_expression_list_#t~mem2|=0, |parse_expression_list_#t~switch3|=true, |parse_expression_list_~#str2~0.base|=37, |parse_expression_list_~#str2~0.offset|=0] [?] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [|#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] ~cond := #in~cond; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] assume 0 == ~cond; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] assume !false; VAL [__VERIFIER_assert_~cond=0, |#NULL.base|=0, |#NULL.offset|=0, |__VERIFIER_assert_#in~cond|=0] [?] CALL call ULTIMATE.init(); VAL [#NULL.base=38, #NULL.offset=35, old(#NULL.base)=38, old(#NULL.offset)=35] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL.base=0, #NULL.offset=0] [L75] call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9); [L76] call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); VAL [#NULL.base=0, #NULL.offset=0, ~#A~0.base=39, ~#A~0.offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0] [L47-L72] ~str.base, ~str.offset := #in~str.base, #in~str.offset; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L51] assume !(~str.base == 0 && ~str.offset == 0); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=1, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=36, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume #t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] assume !(34 == #t~mem8); [L57] havoc #t~mem8; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume #t~short13; [L59] call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short12; [L59] call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short13; [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume #t~short16; [L60] call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume !#t~short16; [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L61-L67] assume ~start~0 <= ~j~0; [L62] call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18.base, #t~ret18.offset; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L4-L6] assume 0 == ~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.preprocessor.BoogiePreprocessorBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL.base=38, #NULL.offset=35, old(#NULL.base)=38, old(#NULL.offset)=35] [?] #NULL.base, #NULL.offset := 0, 0; [?] #valid := #valid[0 := 0]; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] ensures true; VAL [#NULL.base=0, #NULL.offset=0, old(#NULL.base)=38, old(#NULL.offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL.base=0, #NULL.offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL.base=0, #NULL.offset=0] [L75] call ~#A~0.base, ~#A~0.offset := #Ultimate.alloc(9); [L76] call write~int(0, ~#A~0.base, 8 + ~#A~0.offset, 1); VAL [#NULL.base=0, #NULL.offset=0, ~#A~0.base=39, ~#A~0.offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0.base, ~#A~0.offset); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0] [L47-L72] ~str.base, ~str.offset := #in~str.base, #in~str.offset; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] call ~#str2~0.base, ~#str2~0.offset := #Ultimate.alloc(2); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L51] assume !(~str.base == 0 && ~str.offset == 0); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=1, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume !#t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L70] call #t~mem0 := read~int(~str.base, ~str.offset + ~i~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem0=36, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L52-L70] assume !!(0 != #t~mem0); [L70] havoc #t~mem0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] call #t~mem2 := read~int(~str.base, ~str.offset + ~i~0, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L55] assume #t~switch3; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] call #t~mem4 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] call #t~mem5 := read~int(~str.base, ~str.offset + ~start~0, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L56] assume !#t~short6; [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] call #t~mem8 := read~int(~str.base, ~str.offset + ~start~0, 1); VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L57] assume !(34 == #t~mem8); [L57] havoc #t~mem8; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str.base=39, ~str.offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume #t~short13; [L59] call #t~mem10 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short12; [L59] call #t~mem11 := read~int(~str.base, ~str.offset + ~j~0, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L59] assume !#t~short13; [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume #t~short16; [L60] call #t~mem15 := read~int(~str.base, ~str.offset + ~j~0, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L60] assume !#t~short16; [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L61-L67] assume ~start~0 <= ~j~0; [L62] call #t~ret18.base, #t~ret18.offset := r_strncpy(~#str2~0.base, ~#str2~0.offset, ~str.base, ~str.offset + ~start~0, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18.base, #t~ret18.offset; VAL [#in~str.base=39, #in~str.offset=0, #NULL.base=0, #NULL.offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0.base=37, ~#str2~0.offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str.base=39, ~str.offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L4-L6] assume 0 == ~cond; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL.base=0, #NULL.offset=0, ~cond=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] ----- ----- class de.uni_freiburg.informatik.ultimate.boogie.procedureinliner.backtranslation.InlinerBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] ----- [2018-11-23 13:03:22,971 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,972 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,973 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,973 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,973 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,974 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,974 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,974 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement [2018-11-23 13:03:22,975 WARN L1272 BoogieBacktranslator]: Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement ----- class de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator.CACSL2BoogieBacktranslator [?] CALL call ULTIMATE.init(); VAL [#NULL!base=38, #NULL!offset=35, old(#NULL!base)=38, old(#NULL!offset)=35] [?] #NULL := { base: 0, offset: 0 }; [?] #valid[0] := 0; VAL [#NULL!base=0, #NULL!offset=0, old(#NULL!base)=38, old(#NULL!offset)=35] [?] RET call ULTIMATE.init(); VAL [#NULL!base=0, #NULL!offset=0] [?] CALL call #t~ret20 := main(); VAL [#NULL!base=0, #NULL!offset=0] [L75] FCALL call ~#A~0 := #Ultimate.alloc(9); [L76] FCALL call write~int(0, { base: ~#A~0!base, offset: 8 + ~#A~0!offset }, 1); VAL [#NULL!base=0, #NULL!offset=0, ~#A~0!base=39, ~#A~0!offset=0] [L77] CALL call #t~ret19 := parse_expression_list(~#A~0); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0] [L47-L72] ~str := #in~str; [L49] ~start~0 := 0; [L49] ~i~0 := -1; [L49] ~j~0 := -1; [L50] FCALL call ~#str2~0 := #Ultimate.alloc(2); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L51] COND FALSE !(~str == { base: 0, offset: 0 }) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=-1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=1, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=1, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=0, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND FALSE !(#t~switch3) VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=36, #t~switch3=false, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] havoc #t~switch3; [L54] havoc #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L70] FCALL call #t~mem0 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem0=36, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L52-L70] COND FALSE !(!(0 != #t~mem0)) [L70] havoc #t~mem0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=1, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L53] #t~post1 := ~i~0; [L53] ~i~0 := 1 + #t~post1; [L53] havoc #t~post1; [L54] FCALL call #t~mem2 := read~int({ base: ~str!base, offset: ~str!offset + ~i~0 }, 1); [L55] #t~switch3 := 0 == #t~mem2; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L54-L69] COND TRUE #t~switch3 VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] FCALL call #t~mem4 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 32 == #t~mem4; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND FALSE !(#t~short6) [L56] FCALL call #t~mem5 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); [L56] #t~short6 := 9 == #t~mem5; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem4=1, #t~mem5=1, #t~short6=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L56] COND TRUE !#t~short6 [L56] havoc #t~mem4; [L56] havoc #t~mem5; [L56] havoc #t~short6; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] FCALL call #t~mem8 := read~int({ base: ~str!base, offset: ~str!offset + ~start~0 }, 1); VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~mem8=1, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L57] COND FALSE !(34 == #t~mem8) [L57] havoc #t~mem8; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=-1, ~start~0=0, ~str!base=39, ~str!offset=0] [L58] ~j~0 := ~i~0 - 1; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE #t~short13 [L59] FCALL call #t~mem10 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 32 == #t~mem10; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND FALSE !(#t~short12) [L59] FCALL call #t~mem11 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L59] #t~short12 := 9 == #t~mem11; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] #t~short13 := #t~short12; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem10=36, #t~mem11=36, #t~mem2=0, #t~short12=false, #t~short13=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L59] COND TRUE !#t~short13 [L59] havoc #t~mem10; [L59] havoc #t~mem11; [L59] havoc #t~short12; [L59] havoc #t~short13; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] #t~short16 := 0 < ~j~0; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~short16=true, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND TRUE #t~short16 [L60] FCALL call #t~mem15 := read~int({ base: ~str!base, offset: ~str!offset + ~j~0 }, 1); [L60] #t~short16 := 34 == #t~mem15; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem15=36, #t~mem2=0, #t~short16=false, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L60] COND FALSE !(#t~short16) [L60] havoc #t~mem15; [L60] havoc #t~short16; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L61] COND TRUE ~start~0 <= ~j~0 [L62] FCALL call #t~ret18 := r_strncpy(~#str2~0, { base: ~str!base, offset: ~str!offset + ~start~0 }, 1 + (~j~0 - ~start~0)); [L62] havoc #t~ret18; VAL [#in~str!base=39, #in~str!offset=0, #NULL!base=0, #NULL!offset=0, #t~mem2=0, #t~switch3=true, ~#str2~0!base=37, ~#str2~0!offset=0, ~i~0=2, ~j~0=1, ~start~0=0, ~str!base=39, ~str!offset=0] [L63] CALL call __VERIFIER_assert((if 1 + (~j~0 - ~start~0) < 2 then 1 else 0)); VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0] [L3-L8] ~cond := #in~cond; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L4] COND TRUE 0 == ~cond VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L5] assert false; VAL [#in~cond=0, #NULL!base=0, #NULL!offset=0, ~cond=0] [L75] char A [2 + 2 + 4 +1]; [L76] A[2 + 2 + 4] = 0 VAL [A={39:0}] [L77] CALL parse_expression_list (A) VAL [str={39:0}] [L49] int start=0, i=-1, j=-1; [L50] char str2[2]; VAL [i=-1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}] [L51] COND FALSE !(!str) VAL [i=-1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}] [L53] i++ [L54] str[i] [L55] case 0: VAL [i=0, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=1] [L70] EXPR str[i] VAL [i=0, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=1] [L70] COND TRUE str[i] != 0 [L53] i++ [L54] str[i] [L55] case 0: VAL [i=1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=36] [L70] EXPR str[i] VAL [i=1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=36] [L70] COND TRUE str[i] != 0 [L53] i++ [L54] str[i] [L55] case 0: VAL [i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0] [L56] EXPR str[start] [L56] (str[start] == ' ') || (str[start] == '\t') [L56] EXPR str[start] [L56] (str[start] == ' ') || (str[start] == '\t') VAL [(str[start] == ' ') || (str[start] == '\t')=0, i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[start]=1, str[start]=1] [L56] COND FALSE !((str[start] == ' ') || (str[start] == '\t')) [L57] EXPR str[start] VAL [i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[start]=1] [L57] COND FALSE !(str[start] == '"') [L58] j = i-1 VAL [i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0] [L59] (0 < j) && ((str[j] == ' ') || (str[j] == '\t')) [L59] EXPR str[j] [L59] EXPR (str[j] == ' ') || (str[j] == '\t') [L59] EXPR str[j] [L59] EXPR (str[j] == ' ') || (str[j] == '\t') VAL [(0 < j) && ((str[j] == ' ') || (str[j] == '\t'))=1, (str[j] == ' ') || (str[j] == '\t')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36, str[j]=36] [L59] (0 < j) && ((str[j] == ' ') || (str[j] == '\t')) VAL [(0 < j) && ((str[j] == ' ') || (str[j] == '\t'))=0, (str[j] == ' ') || (str[j] == '\t')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36, str[j]=36] [L59] COND FALSE !((0 < j) && ((str[j] == ' ') || (str[j] == '\t'))) [L60] (0 < j) && (str[j] == '"') [L60] EXPR str[j] [L60] (0 < j) && (str[j] == '"') VAL [(0 < j) && (str[j] == '"')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36] [L60] COND FALSE !((0 < j) && (str[j] == '"')) [L61] COND TRUE start<=j [L63] CALL __VERIFIER_assert(j - start + 1 < 2) VAL [\old(cond)=0] [L4] COND TRUE !(cond) VAL [\old(cond)=0, cond=0] [L5] __VERIFIER_error() VAL [\old(cond)=0, cond=0] ----- [2018-11-23 13:03:23,053 INFO L145 WitnessManager]: Wrote witness to /storage/repos/svcomp/c/loops/verisec_OpenSER__cases1_stripFullBoth_arr_false-unreach-call_true-termination.i-witness.graphml [2018-11-23 13:03:23,053 INFO L132 PluginConnector]: ------------------------ END Witness Printer---------------------------- [2018-11-23 13:03:23,054 INFO L168 Benchmark]: Toolchain (without parser) took 24006.52 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: -503.0 MB). Peak memory consumption was 572.9 MB. Max. memory is 7.1 GB. [2018-11-23 13:03:23,056 INFO L168 Benchmark]: CDTParser took 0.23 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 13:03:23,056 INFO L168 Benchmark]: CACSL2BoogieTranslator took 378.06 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 13:03:23,056 INFO L168 Benchmark]: Boogie Procedure Inliner took 29.47 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 13:03:23,057 INFO L168 Benchmark]: Boogie Preprocessor took 40.92 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 13:03:23,057 INFO L168 Benchmark]: RCFGBuilder took 1128.79 ms. Allocated memory was 1.5 GB in the beginning and 2.2 GB in the end (delta: 707.3 MB). Free memory was 1.4 GB in the beginning and 2.1 GB in the end (delta: -731.3 MB). Peak memory consumption was 15.1 MB. Max. memory is 7.1 GB. [2018-11-23 13:03:23,057 INFO L168 Benchmark]: TraceAbstraction took 22276.48 ms. Allocated memory was 2.2 GB in the beginning and 2.6 GB in the end (delta: 368.6 MB). Free memory was 2.1 GB in the beginning and 1.9 GB in the end (delta: 189.0 MB). Peak memory consumption was 557.6 MB. Max. memory is 7.1 GB. [2018-11-23 13:03:23,058 INFO L168 Benchmark]: Witness Printer took 146.37 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: 18.2 MB). Peak memory consumption was 18.2 MB. Max. memory is 7.1 GB. [2018-11-23 13:03:23,062 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.23 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 378.06 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 29.47 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 40.92 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. * RCFGBuilder took 1128.79 ms. Allocated memory was 1.5 GB in the beginning and 2.2 GB in the end (delta: 707.3 MB). Free memory was 1.4 GB in the beginning and 2.1 GB in the end (delta: -731.3 MB). Peak memory consumption was 15.1 MB. Max. memory is 7.1 GB. * TraceAbstraction took 22276.48 ms. Allocated memory was 2.2 GB in the beginning and 2.6 GB in the end (delta: 368.6 MB). Free memory was 2.1 GB in the beginning and 1.9 GB in the end (delta: 189.0 MB). Peak memory consumption was 557.6 MB. Max. memory is 7.1 GB. * Witness Printer took 146.37 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: 18.2 MB). Peak memory consumption was 18.2 MB. Max. memory is 7.1 GB. * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.cacsl2boogietranslator: - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement - GenericResult: Unfinished Backtranslation Unfinished Backtranslation: Expression #t~switch3 has a C AST node but it is no IASTExpression: class org.eclipse.cdt.internal.core.dom.parser.c.CASTSwitchStatement * Results from de.uni_freiburg.informatik.ultimate.plugins.generator.traceabstraction: - CounterExampleResult [Line: 5]: a call of __VERIFIER_error() is reachable a call of __VERIFIER_error() is reachable We found a FailurePath: [L75] char A [2 + 2 + 4 +1]; [L76] A[2 + 2 + 4] = 0 VAL [A={39:0}] [L77] CALL parse_expression_list (A) VAL [str={39:0}] [L49] int start=0, i=-1, j=-1; [L50] char str2[2]; VAL [i=-1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}] [L51] COND FALSE !(!str) VAL [i=-1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}] [L53] i++ [L54] str[i] [L55] case 0: VAL [i=0, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=1] [L70] EXPR str[i] VAL [i=0, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=1] [L70] COND TRUE str[i] != 0 [L53] i++ [L54] str[i] [L55] case 0: VAL [i=1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=36] [L70] EXPR str[i] VAL [i=1, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=36] [L70] COND TRUE str[i] != 0 [L53] i++ [L54] str[i] [L55] case 0: VAL [i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0] [L56] EXPR str[start] [L56] (str[start] == ' ') || (str[start] == '\t') [L56] EXPR str[start] [L56] (str[start] == ' ') || (str[start] == '\t') VAL [(str[start] == ' ') || (str[start] == '\t')=0, i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[start]=1, str[start]=1] [L56] COND FALSE !((str[start] == ' ') || (str[start] == '\t')) [L57] EXPR str[start] VAL [i=2, j=-1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[start]=1] [L57] COND FALSE !(str[start] == '"') [L58] j = i-1 VAL [i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0] [L59] (0 < j) && ((str[j] == ' ') || (str[j] == '\t')) [L59] EXPR str[j] [L59] EXPR (str[j] == ' ') || (str[j] == '\t') [L59] EXPR str[j] [L59] EXPR (str[j] == ' ') || (str[j] == '\t') VAL [(0 < j) && ((str[j] == ' ') || (str[j] == '\t'))=1, (str[j] == ' ') || (str[j] == '\t')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36, str[j]=36] [L59] (0 < j) && ((str[j] == ' ') || (str[j] == '\t')) VAL [(0 < j) && ((str[j] == ' ') || (str[j] == '\t'))=0, (str[j] == ' ') || (str[j] == '\t')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36, str[j]=36] [L59] COND FALSE !((0 < j) && ((str[j] == ' ') || (str[j] == '\t'))) [L60] (0 < j) && (str[j] == '"') [L60] EXPR str[j] [L60] (0 < j) && (str[j] == '"') VAL [(0 < j) && (str[j] == '"')=0, i=2, j=1, start=0, str={39:0}, str={39:0}, str2={37:0}, str[i]=0, str[j]=36] [L60] COND FALSE !((0 < j) && (str[j] == '"')) [L61] COND TRUE start<=j [L63] CALL __VERIFIER_assert(j - start + 1 < 2) VAL [\old(cond)=0] [L4] COND TRUE !(cond) VAL [\old(cond)=0, cond=0] [L5] __VERIFIER_error() VAL [\old(cond)=0, cond=0] - StatisticsResult: Ultimate Automizer benchmark data CFG has 5 procedures, 46 locations, 1 error locations. UNSAFE Result, 22.1s OverallTime, 13 OverallIterations, 3 TraceHistogramMax, 13.7s AutomataDifference, 0.0s DeadEndRemovalTime, 0.0s HoareAnnotationTime, HoareTripleCheckerStatistics: 537 SDtfs, 1017 SDslu, 1817 SDs, 0 SdLazy, 1392 SolverSat, 229 SolverUnsat, 0 SolverUnknown, 0 SolverNotchecked, 2.4s Time, PredicateUnifierStatistics: 0 DeclaredPredicates, 261 GetRequests, 154 SyntacticMatches, 3 SemanticMatches, 104 ConstructedPredicates, 0 IntricatePredicates, 0 DeprecatedPredicates, 267 ImplicationChecksByTransitivity, 3.2s Time, 0.0s BasicInterpolantAutomatonTime, BiggestAbstraction: size=145occurred in iteration=12, 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.6s AutomataMinimizationTime, 12 MinimizatonAttempts, 279 StatesRemovedByMinimization, 9 NontrivialMinimizations, HoareAnnotationStatistics: No data available, RefinementEngineStatistics: TraceCheckStatistics: 0.0s SsaConstructionTime, 0.3s SatisfiabilityAnalysisTime, 5.9s InterpolantComputationTime, 587 NumberOfCodeBlocks, 587 NumberOfCodeBlocksAsserted, 18 NumberOfCheckSat, 531 ConstructedInterpolants, 0 QuantifiedInterpolants, 69566 SizeOfPredicates, 11 NumberOfNonLiveVariables, 521 ConjunctsInSsa, 41 ConjunctsInUnsatCore, 16 InterpolantComputations, 8 PerfectInterpolantSequences, 6/64 InterpolantCoveringCapability, InvariantSynthesisStatistics: No data available, InterpolantConsolidationStatistics: No data available, ReuseStatistics: No data available RESULT: Ultimate proved your program to be incorrect! Received shutdown request...