DRIVER: TVLA Initialization... Blast 2.0. Copyright 2005 Regents of the University of California at Berkeley This program contains Foci, Copyright 2003 Cadence Berkeley Laboratories, Cadence Design Systems. All rights reserved. Begin Parsing files: alternating_list.c Initializing CIL Putting in initializer __BLAST_initialize_alternating_list.c Finished Parsing Reading in shape class... Shape class read. SA> shape_class cl { SA> function (default) { SA> next_field {n} SA> pointers {} SA> abstraction_pointers {a@main; p@main; tmp@main; t@main; } SA> labelled_predicates {} SA> abstraction_labelled_predicates {\x. (* (x)).h==1; \x. (* (x)).h==2; \x. (* (x)).h==3; } SA> } SA> } SA> Begin Building CFA Initializing BLAST Encountered function exit Finished converting function exit Encountered function main ********* function call: __BLAST_initialize_alternating_list.cQuery : (a@main == 0=>false) Query : (a@main == 0=>false) querying exp: (a@main == 0=>false) convertToSimplifySyntax exp = (a@main == 0=>false) Simplify: (IMPLIES (EQ v1 0) FALSE) Forking Simplify process... (Adding axioms) (BG_PUSH (FORALL (x y) (EQ (select (addrOf x y) 0) x))) (BG_PUSH (FORALL (x y d1) (IMPLIES (EQ (foffset x d1) (foffset y d1)) (EQ x y)))) (BG_PUSH (FORALL (x y) (NEQ (addrOf x y) 0))) (BG_PUSH (FORALL (x y) (EQ (* (Div x y) y) x )) ) (BG_PUSH (FORALL (x) (NEQ (_STRINGCONSTANT x) 0 ))) done! Simplify : in isValid Simplify says: > > > > > > 1: Invalid. false Query : (a@main != 0=>false) querying exp: (a@main != 0=>false) convertToSimplifySyntax exp = (a@main != 0=>false) Simplify: (IMPLIES (NEQ v1 0) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 2: Invalid. false ********* function call: exitQuery : (flag@main != 0=>false) querying exp: (flag@main != 0=>false) convertToSimplifySyntax exp = (flag@main != 0=>false) Simplify: (IMPLIES (NEQ v1 0) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 3: Invalid. false Query : (flag@main == 0=>false) querying exp: (flag@main == 0=>false) convertToSimplifySyntax exp = (flag@main == 0=>false) Simplify: (IMPLIES (EQ v1 0) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 4: Invalid. false Query : (t@main == 0=>false) querying exp: (t@main == 0=>false) convertToSimplifySyntax exp = (t@main == 0=>false) Simplify: (IMPLIES (EQ v1 0) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 5: Invalid. false Query : (t@main != 0=>false) querying exp: (t@main != 0=>false) convertToSimplifySyntax exp = (t@main != 0=>false) Simplify: (IMPLIES (NEQ v1 0) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 6: Invalid. false ********* function call: exitQuery : (* (p@main ).h != 3=>false) querying exp: (* (p@main ).h != 3=>false) convertToSimplifySyntax exp = (* (p@main ).h != 3=>false) Simplify: (IMPLIES (NEQ (select (select v2 0) v1) 3) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 7: Invalid. false Query : (* (p@main ).h == 3=>false) querying exp: (* (p@main ).h == 3=>false) convertToSimplifySyntax exp = (* (p@main ).h == 3=>false) Simplify: (IMPLIES (EQ (select (select v2 0) v1) 3) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 8: Invalid. false Query : (flag@main != 0=>false) querying exp: (flag@main != 0=>false) convertToSimplifySyntax exp = (flag@main != 0=>false) Simplify: (IMPLIES (NEQ v1 0) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 9: Invalid. false Query : (flag@main == 0=>false) querying exp: (flag@main == 0=>false) convertToSimplifySyntax exp = (flag@main == 0=>false) Simplify: (IMPLIES (EQ v1 0) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 10: Invalid. false Query : (* (p@main ).h != 1=>false) querying exp: (* (p@main ).h != 1=>false) convertToSimplifySyntax exp = (* (p@main ).h != 1=>false) Simplify: (IMPLIES (NEQ (select (select v2 0) v1) 1) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 11: Invalid. false Query : (* (p@main ).h == 1=>false) querying exp: (* (p@main ).h == 1=>false) convertToSimplifySyntax exp = (* (p@main ).h == 1=>false) Simplify: (IMPLIES (EQ (select (select v2 0) v1) 1) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 12: Invalid. false ********* function call: printfQuery : (* (p@main ).h != 2=>false) querying exp: (* (p@main ).h != 2=>false) convertToSimplifySyntax exp = (* (p@main ).h != 2=>false) Simplify: (IMPLIES (NEQ (select (select v2 0) v1) 2) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 13: Invalid. false Query : (* (p@main ).h == 2=>false) querying exp: (* (p@main ).h == 2=>false) convertToSimplifySyntax exp = (* (p@main ).h == 2=>false) Simplify: (IMPLIES (EQ (select (select v2 0) v1) 2) FALSE) Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > 14: Invalid. false Finished converting function main Encountered function __BLAST_initialize_alternating_list.c Finished converting function __BLAST_initialize_alternating_list.c Start Building Callgraph-ocp Unknown called fun: malloc Unknown called fun: printf Unknown called fun: malloc Filling SCC info SCC 1: main SCC 2: exit SCC 3: __BLAST_initialize_alternating_list.c SCC info filled Post 1 : 2, 3 Post 2 : Post 3 : SCC sinks: 2, 3 Done Building Callgraph-ocp In output_call_paths cr Checking for cycles in the call graph. cr Done checking for cycles in the call graph. Call Graph Paths: 7 Visited functions: 3 Visited existing functions: 3 Defined functions: main exit __BLAST_initialize_alternating_list.c Loop head : (0,1) Loop head : (1,24) Loop head : (1,11) Finished Building CFA Printing System Description Functions are: __BLAST_initialize_alternating_list.c exit main Function: __BLAST_initialize_alternating_list.c Formals: [] Labels: Location: Location: id=2#1 src="alternating_list.c"; line=0 Attributes: Outgoing edges: Location: id=2#1 src="alternating_list.c"; line=0--- Block(Return(0);)--->Location: id=2#0 (Artificial) Ingoing edges: Location: Location: id=2#0 (Artificial) Attributes: Outgoing edges: Ingoing edges: Location: id=2#1 src="alternating_list.c"; line=0--- Block(Return(0);)--->Location: id=2#0 (Artificial) Function: exit Formals: [s@exit] Labels: _EXIT: Location: id=0#1 src="alternating_list.c"; line=14 Location: Location: id=0#1 src="alternating_list.c"; line=14 Attributes: Outgoing edges: Location: id=0#1 src="alternating_list.c"; line=14--- Skip--->Location: id=0#1 src="alternating_list.c"; line=14 Ingoing edges: Location: id=0#1 src="alternating_list.c"; line=14--- Skip--->Location: id=0#1 src="alternating_list.c"; line=14 Function: main Formals: [] Labels: ERROR: Location: id=1#30 src="alternating_list.c"; line=60 Location: Location: id=1#1 src="alternating_list.c"; line=0 Attributes: Outgoing edges: Location: id=1#1 src="alternating_list.c"; line=0--- FunctionCall(__BLAST_initialize_alternating_list.c())---> Location: id=1#2 (Artificial) Ingoing edges: Location: Location: id=1#2 (Artificial) Attributes: Outgoing edges: Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="alternating_list.c"; line=19 Ingoing edges: Location: id=1#1 src="alternating_list.c"; line=0--- FunctionCall(__BLAST_initialize_alternating_list.c())---> Location: id=1#2 (Artificial) Location: Location: id=1#3 src="alternating_list.c"; line=19 Attributes: Outgoing edges: Location: id=1#3 src="alternating_list.c"; line=19--- Block(flag@main = 1;)--->Location: id=1#4 src="alternating_list.c"; line=22 Ingoing edges: Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="alternating_list.c"; line=19 Location: Location: id=1#4 src="alternating_list.c"; line=22 Attributes: Outgoing edges: Location: id=1#4 src="alternating_list.c"; line=22--- FunctionCall(tmp@main = malloc(512))--->Location: id=1#5 src="alternating_list.c"; line=22 Ingoing edges: Location: id=1#3 src="alternating_list.c"; line=19--- Block(flag@main = 1;)--->Location: id=1#4 src="alternating_list.c"; line=22 Location: Location: id=1#5 src="alternating_list.c"; line=22 Attributes: Outgoing edges: Location: id=1#5 src="alternating_list.c"; line=22--- Block(a@main = tmp@main;)--->Location: id=1#6 src="alternating_list.c"; line=23 Ingoing edges: Location: id=1#4 src="alternating_list.c"; line=22--- FunctionCall(tmp@main = malloc(512))--->Location: id=1#5 src="alternating_list.c"; line=22 Location: Location: id=1#6 src="alternating_list.c"; line=23 Attributes: Outgoing edges: Location: id=1#6 src="alternating_list.c"; line=23--- Pred(a@main == 0)--->Location: id=1#7 src="alternating_list.c"; line=23 Location: id=1#6 src="alternating_list.c"; line=23--- Pred(a@main != 0)--->Location: id=1#10 src="alternating_list.c"; line=25 Ingoing edges: Location: id=1#5 src="alternating_list.c"; line=22--- Block(a@main = tmp@main;)--->Location: id=1#6 src="alternating_list.c"; line=23 Location: Location: id=1#7 src="alternating_list.c"; line=23 Attributes: Outgoing edges: Location: id=1#7 src="alternating_list.c"; line=23--- FunctionCall(exit(1))--->Location: id=1#9 (Artificial) Ingoing edges: Location: id=1#6 src="alternating_list.c"; line=23--- Pred(a@main == 0)--->Location: id=1#7 src="alternating_list.c"; line=23 Location: Location: id=1#9 (Artificial) Attributes: Outgoing edges: Location: id=1#9 (Artificial)---Skip--->Location: id=1#10 src="alternating_list.c"; line=25 Ingoing edges: Location: id=1#7 src="alternating_list.c"; line=23--- FunctionCall(exit(1))--->Location: id=1#9 (Artificial) Location: Location: id=1#10 src="alternating_list.c"; line=25 Attributes: Outgoing edges: Location: id=1#10 src="alternating_list.c"; line=25--- Block(p@main = a@main;)--->Location: id=1#11 src="alternating_list.c"; line=26 Ingoing edges: Location: id=1#9 (Artificial)---Skip--->Location: id=1#10 src="alternating_list.c"; line=25 Location: id=1#6 src="alternating_list.c"; line=23--- Pred(a@main != 0)--->Location: id=1#10 src="alternating_list.c"; line=25 Location: Location: id=1#11 src="alternating_list.c"; line=26 Attributes: Outgoing edges: Location: id=1#11 src="alternating_list.c"; line=26--- Pred(true)--->Location: id=1#12 src="alternating_list.c"; line=27 Location: id=1#11 src="alternating_list.c"; line=26--- Pred(true)--->Location: id=1#13 src="alternating_list.c"; line=39 Ingoing edges: Location: id=1#10 src="alternating_list.c"; line=25--- Block(p@main = a@main;)--->Location: id=1#11 src="alternating_list.c"; line=26 Location: id=1#21 src="alternating_list.c"; line=36--- Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#11 src="alternating_list.c"; line=26 Location: Location: id=1#12 src="alternating_list.c"; line=27 Attributes: Outgoing edges: Location: id=1#12 src="alternating_list.c"; line=27--- Pred(flag@main != 0)--->Location: id=1#14 src="alternating_list.c"; line=28 Location: id=1#12 src="alternating_list.c"; line=27--- Pred(flag@main == 0)--->Location: id=1#15 src="alternating_list.c"; line=31 Ingoing edges: Location: id=1#11 src="alternating_list.c"; line=26--- Pred(true)--->Location: id=1#12 src="alternating_list.c"; line=27 Location: Location: id=1#14 src="alternating_list.c"; line=28 Attributes: Outgoing edges: Location: id=1#14 src="alternating_list.c"; line=28--- Block(* (p@main ).h = 1;flag@main = 0;)--->Location: id=1#16 src="alternating_list.c"; line=34 Ingoing edges: Location: id=1#12 src="alternating_list.c"; line=27--- Pred(flag@main != 0)--->Location: id=1#14 src="alternating_list.c"; line=28 Location: Location: id=1#16 src="alternating_list.c"; line=34 Attributes: Outgoing edges: Location: id=1#16 src="alternating_list.c"; line=34--- FunctionCall(t@main = malloc(512))--->Location: id=1#17 src="alternating_list.c"; line=35 Ingoing edges: Location: id=1#14 src="alternating_list.c"; line=28--- Block(* (p@main ).h = 1;flag@main = 0;)--->Location: id=1#16 src="alternating_list.c"; line=34 Location: id=1#15 src="alternating_list.c"; line=31--- Block(* (p@main ).h = 2;flag@main = 1;)--->Location: id=1#16 src="alternating_list.c"; line=34 Location: Location: id=1#17 src="alternating_list.c"; line=35 Attributes: Outgoing edges: Location: id=1#17 src="alternating_list.c"; line=35--- Pred(t@main == 0)--->Location: id=1#18 src="alternating_list.c"; line=35 Location: id=1#17 src="alternating_list.c"; line=35--- Pred(t@main != 0)--->Location: id=1#21 src="alternating_list.c"; line=36 Ingoing edges: Location: id=1#16 src="alternating_list.c"; line=34--- FunctionCall(t@main = malloc(512))--->Location: id=1#17 src="alternating_list.c"; line=35 Location: Location: id=1#18 src="alternating_list.c"; line=35 Attributes: Outgoing edges: Location: id=1#18 src="alternating_list.c"; line=35--- FunctionCall(exit(1))--->Location: id=1#20 (Artificial) Ingoing edges: Location: id=1#17 src="alternating_list.c"; line=35--- Pred(t@main == 0)--->Location: id=1#18 src="alternating_list.c"; line=35 Location: Location: id=1#20 (Artificial) Attributes: Outgoing edges: Location: id=1#20 (Artificial)---Skip--->Location: id=1#21 src="alternating_list.c"; line=36 Ingoing edges: Location: id=1#18 src="alternating_list.c"; line=35--- FunctionCall(exit(1))--->Location: id=1#20 (Artificial) Location: Location: id=1#21 src="alternating_list.c"; line=36 Attributes: Outgoing edges: Location: id=1#21 src="alternating_list.c"; line=36--- Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#11 src="alternating_list.c"; line=26 Ingoing edges: Location: id=1#20 (Artificial)---Skip--->Location: id=1#21 src="alternating_list.c"; line=36 Location: id=1#17 src="alternating_list.c"; line=35--- Pred(t@main != 0)--->Location: id=1#21 src="alternating_list.c"; line=36 Location: Location: id=1#15 src="alternating_list.c"; line=31 Attributes: Outgoing edges: Location: id=1#15 src="alternating_list.c"; line=31--- Block(* (p@main ).h = 2;flag@main = 1;)--->Location: id=1#16 src="alternating_list.c"; line=34 Ingoing edges: Location: id=1#12 src="alternating_list.c"; line=27--- Pred(flag@main == 0)--->Location: id=1#15 src="alternating_list.c"; line=31 Location: Location: id=1#13 src="alternating_list.c"; line=39 Attributes: Outgoing edges: Location: id=1#13 src="alternating_list.c"; line=39--- Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44 Ingoing edges: Location: id=1#11 src="alternating_list.c"; line=26--- Pred(true)--->Location: id=1#13 src="alternating_list.c"; line=39 Location: Location: id=1#24 src="alternating_list.c"; line=44 Attributes: Outgoing edges: Location: id=1#24 src="alternating_list.c"; line=44--- Pred(* (p@main ).h != 3)--->Location: id=1#25 src="alternating_list.c"; line=45 Location: id=1#24 src="alternating_list.c"; line=44--- Pred(* (p@main ).h == 3)--->Location: id=1#26 src="alternating_list.c"; line=57 Ingoing edges: Location: id=1#13 src="alternating_list.c"; line=39--- Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44 Location: id=1#31 src="alternating_list.c"; line=54--- Block(p@main = * (p@main ).n;)--->Location: id=1#24 src="alternating_list.c"; line=44 Location: Location: id=1#25 src="alternating_list.c"; line=45 Attributes: Outgoing edges: Location: id=1#25 src="alternating_list.c"; line=45--- Pred(flag@main != 0)--->Location: id=1#27 src="alternating_list.c"; line=46 Location: id=1#25 src="alternating_list.c"; line=45--- Pred(flag@main == 0)--->Location: id=1#28 src="alternating_list.c"; line=50 Ingoing edges: Location: id=1#24 src="alternating_list.c"; line=44--- Pred(* (p@main ).h != 3)--->Location: id=1#25 src="alternating_list.c"; line=45 Location: Location: id=1#27 src="alternating_list.c"; line=46 Attributes: Outgoing edges: Location: id=1#27 src="alternating_list.c"; line=46--- Block(flag@main = 0;)--->Location: id=1#29 src="alternating_list.c"; line=47 Ingoing edges: Location: id=1#25 src="alternating_list.c"; line=45--- Pred(flag@main != 0)--->Location: id=1#27 src="alternating_list.c"; line=46 Location: Location: id=1#29 src="alternating_list.c"; line=47 Attributes: Outgoing edges: Location: id=1#29 src="alternating_list.c"; line=47--- Pred(* (p@main ).h != 1)--->Location: id=1#30 src="alternating_list.c"; line=60 Location: id=1#29 src="alternating_list.c"; line=47--- Pred(* (p@main ).h == 1)--->Location: id=1#31 src="alternating_list.c"; line=54 Ingoing edges: Location: id=1#27 src="alternating_list.c"; line=46--- Block(flag@main = 0;)--->Location: id=1#29 src="alternating_list.c"; line=47 Location: Location: id=1#30 src="alternating_list.c"; line=60 Attributes: Outgoing edges: Location: id=1#30 src="alternating_list.c"; line=60--- FunctionCall(printf("Alternation violation found.\n"))---> Location: id=1#32 (Artificial) Ingoing edges: Location: id=1#29 src="alternating_list.c"; line=47--- Pred(* (p@main ).h != 1)--->Location: id=1#30 src="alternating_list.c"; line=60 Location: id=1#36 src="alternating_list.c"; line=51--- Pred(* (p@main ).h != 2)--->Location: id=1#30 src="alternating_list.c"; line=60 Location: Location: id=1#32 (Artificial) Attributes: Outgoing edges: Location: id=1#32 (Artificial)---Skip--->Location: id=1#33 src="alternating_list.c"; line=61 Ingoing edges: Location: id=1#30 src="alternating_list.c"; line=60--- FunctionCall(printf("Alternation violation found.\n"))---> Location: id=1#32 (Artificial) Location: Location: id=1#33 src="alternating_list.c"; line=61 Attributes: Outgoing edges: Location: id=1#33 src="alternating_list.c"; line=61--- Block(__retres@main = 1;)--->Location: id=1#34 src="alternating_list.c"; line=17 Ingoing edges: Location: id=1#32 (Artificial)---Skip--->Location: id=1#33 src="alternating_list.c"; line=61 Location: Location: id=1#34 src="alternating_list.c"; line=17 Attributes: Outgoing edges: Location: id=1#34 src="alternating_list.c"; line=17--- Block(Return(__retres@main);)--->Location: id=1#0 (Artificial) Ingoing edges: Location: id=1#33 src="alternating_list.c"; line=61--- Block(__retres@main = 1;)--->Location: id=1#34 src="alternating_list.c"; line=17 Location: id=1#26 src="alternating_list.c"; line=57--- Block(__retres@main = 0;)--->Location: id=1#34 src="alternating_list.c"; line=17 Location: Location: id=1#0 (Artificial) Attributes: Outgoing edges: Ingoing edges: Location: id=1#34 src="alternating_list.c"; line=17--- Block(Return(__retres@main);)--->Location: id=1#0 (Artificial) Location: Location: id=1#31 src="alternating_list.c"; line=54 Attributes: Outgoing edges: Location: id=1#31 src="alternating_list.c"; line=54--- Block(p@main = * (p@main ).n;)--->Location: id=1#24 src="alternating_list.c"; line=44 Ingoing edges: Location: id=1#29 src="alternating_list.c"; line=47--- Pred(* (p@main ).h == 1)--->Location: id=1#31 src="alternating_list.c"; line=54 Location: id=1#36 src="alternating_list.c"; line=51--- Pred(* (p@main ).h == 2)--->Location: id=1#31 src="alternating_list.c"; line=54 Location: Location: id=1#28 src="alternating_list.c"; line=50 Attributes: Outgoing edges: Location: id=1#28 src="alternating_list.c"; line=50--- Block(flag@main = 1;)--->Location: id=1#36 src="alternating_list.c"; line=51 Ingoing edges: Location: id=1#25 src="alternating_list.c"; line=45--- Pred(flag@main == 0)--->Location: id=1#28 src="alternating_list.c"; line=50 Location: Location: id=1#36 src="alternating_list.c"; line=51 Attributes: Outgoing edges: Location: id=1#36 src="alternating_list.c"; line=51--- Pred(* (p@main ).h != 2)--->Location: id=1#30 src="alternating_list.c"; line=60 Location: id=1#36 src="alternating_list.c"; line=51--- Pred(* (p@main ).h == 2)--->Location: id=1#31 src="alternating_list.c"; line=54 Ingoing edges: Location: id=1#28 src="alternating_list.c"; line=50--- Block(flag@main = 1;)--->Location: id=1#36 src="alternating_list.c"; line=51 Location: Location: id=1#26 src="alternating_list.c"; line=57 Attributes: Outgoing edges: Location: id=1#26 src="alternating_list.c"; line=57--- Block(__retres@main = 0;)--->Location: id=1#34 src="alternating_list.c"; line=17 Ingoing edges: Location: id=1#24 src="alternating_list.c"; line=44--- Pred(* (p@main ).h == 3)--->Location: id=1#26 src="alternating_list.c"; line=57 Global variables are: Lvalues are: Lval (* (p@main)).n Lval a@main Lval __retres@main Lval __BLAST_initialize_alternating_list.c Lval * (p@main) Lval (* (p@main)).h Lval tmp@main Lval p@main Lval malloc Lval printf Lval __BLAST_NONDET@main Lval flag@main Lval exit Lval t@main Attribute table Starting the alias analysis In do_bdd_alias Number of BDD variables = 4 a@main __BLAST_initialize_alternating_list.c t@main flag@main tmp@main __bddptsto_mem0 p@main __bddptsto_mem1 exit main __retres@main s@exit bdd_pts_to: Starting iteration. In assign_alloc ptarget is t@main In assign_alloc ptarget is tmp@main In assign_alloc ptarget is t@main In assign_alloc ptarget is tmp@main In assign_alloc ptarget is t@main In assign_alloc ptarget is tmp@main In assign_alloc ptarget is t@main In assign_alloc ptarget is tmp@main In assign_alloc ptarget is t@main In assign_alloc ptarget is tmp@main In assign_alloc ptarget is t@main In assign_alloc ptarget is tmp@main Number of edges (flow insensitive) 10.000000 Finished Building Aliases Finished Building Must Aliases Proc. scc--2 Compute scc_mods: 2 : 1 : exit Direct Wr:2:exit COMP MOD iter1 done COMP MOD iter2 done Proc. scc--3 Compute scc_mods: 3 : 1 : __BLAST_initialize_alternating_list.c Direct Wr:3:__BLAST_initialize_alternating_list.c COMP MOD iter1 done COMP MOD iter2 done Proc. scc--1 Compute scc_mods: 1 : 1 : main Call exit effects Call exit effects Call malloc effects Call printf effects Call malloc effects Call __BLAST_initialize_alternating_list.c effects Direct Wr:1:main get_lval_aliases_iter: flag@main Alias query for * (p@main) and flag@main After peeling: * (p@main) and flag@main The types are different. Hence not aliased. QueryAlias * (p@main) flag@main (false) Alias query for a@main and flag@main After peeling: a@main and flag@main Alias query for t@main and flag@main After peeling: t@main and flag@main Alias query for (* (p@main)).h and flag@main After peeling: (* (p@main)).h and flag@main QueryAlias (* (p@main)).h flag@main (false) Alias query for flag@main and flag@main After peeling: flag@main and flag@main Alias query for tmp@main and flag@main After peeling: tmp@main and flag@main Alias query for __BLAST_NONDET@main and flag@main After peeling: __BLAST_NONDET@main and flag@main Alias query for p@main and flag@main After peeling: p@main and flag@main Alias query for __retres@main and flag@main After peeling: __retres@main and flag@main Alias query for (* (p@main)).n and flag@main After peeling: (* (p@main)).n and flag@main The types are different. Hence not aliased. QueryAlias (* (p@main)).n flag@main (false) Alias query for __BLAST_initialize_alternating_list.c and flag@main After peeling: __BLAST_initialize_alternating_list.c and flag@main Alias query for printf and flag@main After peeling: printf and flag@main Alias query for exit and flag@main After peeling: exit and flag@main Alias query for malloc and flag@main After peeling: malloc and flag@main alias set: flag@main get_lval_aliases_iter: tmp@main Alias query for * (p@main) and tmp@main After peeling: * (p@main) and tmp@main The types are different. Hence not aliased. QueryAlias * (p@main) tmp@main (false) Alias query for a@main and tmp@main After peeling: a@main and tmp@main Alias query for t@main and tmp@main After peeling: t@main and tmp@main Alias query for (* (p@main)).h and tmp@main After peeling: (* (p@main)).h and tmp@main The types are different. Hence not aliased. QueryAlias (* (p@main)).h tmp@main (false) Alias query for flag@main and tmp@main After peeling: flag@main and tmp@main Alias query for tmp@main and tmp@main After peeling: tmp@main and tmp@main Alias query for __BLAST_NONDET@main and tmp@main After peeling: __BLAST_NONDET@main and tmp@main Alias query for p@main and tmp@main After peeling: p@main and tmp@main Alias query for __retres@main and tmp@main After peeling: __retres@main and tmp@main Alias query for (* (p@main)).n and tmp@main After peeling: (* (p@main)).n and tmp@main QueryAlias (* (p@main)).n tmp@main (false) Alias query for __BLAST_initialize_alternating_list.c and tmp@main After peeling: __BLAST_initialize_alternating_list.c and tmp@main Alias query for printf and tmp@main After peeling: printf and tmp@main Alias query for exit and tmp@main After peeling: exit and tmp@main Alias query for malloc and tmp@main After peeling: malloc and tmp@main alias set: tmp@main get_lval_aliases_iter: a@main Alias query for * (p@main) and a@main After peeling: * (p@main) and a@main The types are different. Hence not aliased. QueryAlias * (p@main) a@main (false) Alias query for a@main and a@main After peeling: a@main and a@main Alias query for t@main and a@main After peeling: t@main and a@main Alias query for (* (p@main)).h and a@main After peeling: (* (p@main)).h and a@main The types are different. Hence not aliased. QueryAlias (* (p@main)).h a@main (false) Alias query for flag@main and a@main After peeling: flag@main and a@main Alias query for tmp@main and a@main After peeling: tmp@main and a@main Alias query for __BLAST_NONDET@main and a@main After peeling: __BLAST_NONDET@main and a@main Alias query for p@main and a@main After peeling: p@main and a@main Alias query for __retres@main and a@main After peeling: __retres@main and a@main Alias query for (* (p@main)).n and a@main After peeling: (* (p@main)).n and a@main QueryAlias (* (p@main)).n a@main (false) Alias query for __BLAST_initialize_alternating_list.c and a@main After peeling: __BLAST_initialize_alternating_list.c and a@main Alias query for printf and a@main After peeling: printf and a@main Alias query for exit and a@main After peeling: exit and a@main Alias query for malloc and a@main After peeling: malloc and a@main alias set: a@main get_lval_aliases_iter: p@main Alias query for * (p@main) and p@main After peeling: * (p@main) and p@main The types are different. Hence not aliased. QueryAlias * (p@main) p@main (false) Alias query for a@main and p@main After peeling: a@main and p@main Alias query for t@main and p@main After peeling: t@main and p@main Alias query for (* (p@main)).h and p@main After peeling: (* (p@main)).h and p@main The types are different. Hence not aliased. QueryAlias (* (p@main)).h p@main (false) Alias query for flag@main and p@main After peeling: flag@main and p@main Alias query for tmp@main and p@main After peeling: tmp@main and p@main Alias query for __BLAST_NONDET@main and p@main After peeling: __BLAST_NONDET@main and p@main Alias query for p@main and p@main After peeling: p@main and p@main Alias query for __retres@main and p@main After peeling: __retres@main and p@main Alias query for (* (p@main)).n and p@main After peeling: (* (p@main)).n and p@main QueryAlias (* (p@main)).n p@main (false) Alias query for __BLAST_initialize_alternating_list.c and p@main After peeling: __BLAST_initialize_alternating_list.c and p@main Alias query for printf and p@main After peeling: printf and p@main Alias query for exit and p@main After peeling: exit and p@main Alias query for malloc and p@main After peeling: malloc and p@main alias set: p@main get_lval_aliases_iter: (* (p@main)).h Alias query for * (p@main) and (* (p@main)).h After peeling: * (p@main) and (* (p@main)).h The types are different. Hence not aliased. QueryAlias * (p@main) (* (p@main)).h (false) Alias query for a@main and (* (p@main)).h After peeling: a@main and (* (p@main)).h The types are different. Hence not aliased. QueryAlias a@main (* (p@main)).h (false) Alias query for t@main and (* (p@main)).h After peeling: t@main and (* (p@main)).h The types are different. Hence not aliased. QueryAlias t@main (* (p@main)).h (false) Alias query for (* (p@main)).h and (* (p@main)).h After peeling: (* (p@main)).h and (* (p@main)).h QueryAlias (* (p@main)).h (* (p@main)).h (false) Alias query for flag@main and (* (p@main)).h After peeling: flag@main and (* (p@main)).h QueryAlias flag@main (* (p@main)).h (false) Alias query for tmp@main and (* (p@main)).h After peeling: tmp@main and (* (p@main)).h The types are different. Hence not aliased. QueryAlias tmp@main (* (p@main)).h (false) Alias query for __BLAST_NONDET@main and (* (p@main)).h After peeling: __BLAST_NONDET@main and (* (p@main)).h Warning:Error raised in checkAliasFI!:Not_found for inputs __BLAST_NONDET@main and (* (p@main)).h QueryAlias __BLAST_NONDET@main (* (p@main)).h (false) Alias query for p@main and (* (p@main)).h After peeling: p@main and (* (p@main)).h The types are different. Hence not aliased. QueryAlias p@main (* (p@main)).h (false) Alias query for __retres@main and (* (p@main)).h After peeling: __retres@main and (* (p@main)).h QueryAlias __retres@main (* (p@main)).h (false) Alias query for (* (p@main)).n and (* (p@main)).h After peeling: (* (p@main)).n and (* (p@main)).h The types are different. Hence not aliased. QueryAlias (* (p@main)).n (* (p@main)).h (false) Alias query for __BLAST_initialize_alternating_list.c and (* (p@main)).h After peeling: __BLAST_initialize_alternating_list.c and (* (p@main)).h The types are different. Hence not aliased. QueryAlias __BLAST_initialize_alternating_list.c (* (p@main)).h (false) Alias query for printf and (* (p@main)).h After peeling: printf and (* (p@main)).h The types are different. Hence not aliased. QueryAlias printf (* (p@main)).h (false) Alias query for exit and (* (p@main)).h After peeling: exit and (* (p@main)).h The types are different. Hence not aliased. QueryAlias exit (* (p@main)).h (false) Alias query for malloc and (* (p@main)).h After peeling: malloc and (* (p@main)).h The types are different. Hence not aliased. QueryAlias malloc (* (p@main)).h (false) alias set: (* (p@main)).h get_lval_aliases_iter: p@main get_lval_aliases_iter: flag@main get_lval_aliases_iter: __retres@main Alias query for * (p@main) and __retres@main After peeling: * (p@main) and __retres@main The types are different. Hence not aliased. QueryAlias * (p@main) __retres@main (false) Alias query for a@main and __retres@main After peeling: a@main and __retres@main Alias query for t@main and __retres@main After peeling: t@main and __retres@main Alias query for (* (p@main)).h and __retres@main After peeling: (* (p@main)).h and __retres@main QueryAlias (* (p@main)).h __retres@main (false) Alias query for flag@main and __retres@main After peeling: flag@main and __retres@main Alias query for tmp@main and __retres@main After peeling: tmp@main and __retres@main Alias query for __BLAST_NONDET@main and __retres@main After peeling: __BLAST_NONDET@main and __retres@main Alias query for p@main and __retres@main After peeling: p@main and __retres@main Alias query for __retres@main and __retres@main After peeling: __retres@main and __retres@main Alias query for (* (p@main)).n and __retres@main After peeling: (* (p@main)).n and __retres@main The types are different. Hence not aliased. QueryAlias (* (p@main)).n __retres@main (false) Alias query for __BLAST_initialize_alternating_list.c and __retres@main After peeling: __BLAST_initialize_alternating_list.c and __retres@main Alias query for printf and __retres@main After peeling: printf and __retres@main Alias query for exit and __retres@main After peeling: exit and __retres@main Alias query for malloc and __retres@main After peeling: malloc and __retres@main alias set: __retres@main get_lval_aliases_iter: flag@main get_lval_aliases_iter: p@main get_lval_aliases_iter: __retres@main get_lval_aliases_iter: flag@main get_lval_aliases_iter: (* (p@main)).h get_lval_aliases_iter: flag@main get_lval_aliases_iter: t@main Alias query for * (p@main) and t@main After peeling: * (p@main) and t@main The types are different. Hence not aliased. QueryAlias * (p@main) t@main (false) Alias query for a@main and t@main After peeling: a@main and t@main Alias query for t@main and t@main After peeling: t@main and t@main Alias query for (* (p@main)).h and t@main After peeling: (* (p@main)).h and t@main The types are different. Hence not aliased. QueryAlias (* (p@main)).h t@main (false) Alias query for flag@main and t@main After peeling: flag@main and t@main Alias query for tmp@main and t@main After peeling: tmp@main and t@main Alias query for __BLAST_NONDET@main and t@main After peeling: __BLAST_NONDET@main and t@main Alias query for p@main and t@main After peeling: p@main and t@main Alias query for __retres@main and t@main After peeling: __retres@main and t@main Alias query for (* (p@main)).n and t@main After peeling: (* (p@main)).n and t@main QueryAlias (* (p@main)).n t@main (false) Alias query for __BLAST_initialize_alternating_list.c and t@main After peeling: __BLAST_initialize_alternating_list.c and t@main Alias query for printf and t@main After peeling: printf and t@main Alias query for exit and t@main After peeling: exit and t@main Alias query for malloc and t@main After peeling: malloc and t@main alias set: t@main get_lval_aliases_iter: (* (p@main)).n Alias query for * (p@main) and (* (p@main)).n After peeling: * (p@main) and (* (p@main)).n The types are different. Hence not aliased. QueryAlias * (p@main) (* (p@main)).n (false) Alias query for a@main and (* (p@main)).n After peeling: a@main and (* (p@main)).n QueryAlias a@main (* (p@main)).n (false) Alias query for t@main and (* (p@main)).n After peeling: t@main and (* (p@main)).n QueryAlias t@main (* (p@main)).n (false) Alias query for (* (p@main)).h and (* (p@main)).n After peeling: (* (p@main)).h and (* (p@main)).n The types are different. Hence not aliased. QueryAlias (* (p@main)).h (* (p@main)).n (false) Alias query for flag@main and (* (p@main)).n After peeling: flag@main and (* (p@main)).n The types are different. Hence not aliased. QueryAlias flag@main (* (p@main)).n (false) Alias query for tmp@main and (* (p@main)).n After peeling: tmp@main and (* (p@main)).n QueryAlias tmp@main (* (p@main)).n (false) Alias query for __BLAST_NONDET@main and (* (p@main)).n After peeling: __BLAST_NONDET@main and (* (p@main)).n The types are different. Hence not aliased. QueryAlias __BLAST_NONDET@main (* (p@main)).n (false) Alias query for p@main and (* (p@main)).n After peeling: p@main and (* (p@main)).n QueryAlias p@main (* (p@main)).n (false) Alias query for __retres@main and (* (p@main)).n After peeling: __retres@main and (* (p@main)).n The types are different. Hence not aliased. QueryAlias __retres@main (* (p@main)).n (false) Alias query for (* (p@main)).n and (* (p@main)).n After peeling: (* (p@main)).n and (* (p@main)).n QueryAlias (* (p@main)).n (* (p@main)).n (false) Alias query for __BLAST_initialize_alternating_list.c and (* (p@main)).n After peeling: __BLAST_initialize_alternating_list.c and (* (p@main)).n The types are different. Hence not aliased. QueryAlias __BLAST_initialize_alternating_list.c (* (p@main)).n (false) Alias query for printf and (* (p@main)).n After peeling: printf and (* (p@main)).n The types are different. Hence not aliased. QueryAlias printf (* (p@main)).n (false) Alias query for exit and (* (p@main)).n After peeling: exit and (* (p@main)).n The types are different. Hence not aliased. QueryAlias exit (* (p@main)).n (false) Alias query for malloc and (* (p@main)).n After peeling: malloc and (* (p@main)).n The types are different. Hence not aliased. QueryAlias malloc (* (p@main)).n (false) alias set: (* (p@main)).n get_lval_aliases_iter: p@main get_lval_aliases_iter: (* (p@main)).h get_lval_aliases_iter: flag@main COMP MOD iter1 done COMP MOD iter2 done Done computing mods Write mods to : alternating_list.mods.gl Done writing to :alternating_list.mods.gl Write mods to : alternating_list.mods.fl Done writing to :alternating_list.mods.fl Write mods to : alternating_list.mods.mmb Done writing to :alternating_list.mods.mmb Write mods to : alternating_list.mods.ceef Done writing to :alternating_list.mods.ceef Done writing mods In add_symbolic_hooks [add_symbolic_hooks] Processing function: __BLAST_initialize_alternating_list.c [add_symbolic_hooks] Processing function: exit Done post-alias-analysis back from post_alias_analysis Unknown called fun: malloc Unknown called fun: printf Unknown called fun: malloc Start Building Callgraph-ocp Done Building Callgraph-ocp In output_call_paths cr Checking for cycles in the call graph. cr Done checking for cycles in the call graph. Call Graph Paths: 7 Visited functions: 3 Visited existing functions: 3 Defined functions: main exit __BLAST_initialize_alternating_list.c Unknown fun : DRIVER: TVLA Initialization... DRIVER: TVLA Initialization... Initialized Abstraction SA> Initialization! SA: Add predicate sm SA: Add predicate eq SA: Add predicate isnew In Deconstruct_fc :exit(,1) In Deconstruct_fc :exit(,1) SA> Shape-alias pair found: p@main, t@main SA> Shape-alias pair found: p@main, p@main In Deconstruct_fc :malloc(,512) SA> Shape-alias pair found: t@main, Returned(NOT_IMPLEMENTED_FUNCTION) In Deconstruct_fc :malloc(,512) In Deconstruct_fc :printf(,"Alternation violation found.\n") SA> Shape-alias pair found: a@main, p@main SA> Shape-alias pair found: a@main, tmp@main In Deconstruct_fc :malloc(,512) SA> Shape-alias pair found: tmp@main, Returned(NOT_IMPLEMENTED_FUNCTION) In Deconstruct_fc :malloc(,512) In Deconstruct_fc :__BLAST_initialize_alternating_list.c() SA> Switching SC: old = <>; new = <(default)> SA> Create shape class (default) DRIVER: TVLA Initialization... SA: Add predicate sm SA: Add predicate eq SA: Add predicate isnew TVLA: create_predicate 2, field_[n] SA: Add predicate field_n TVLA: create_instr_predicate 1, c_[n] SA: Add predicate c_n TVLA: create_predicate 1, ptsto_[t@main] SA: Add predicate pt_t@main TVLA: create_instr_predicate 1, r_[t@main,n] SA: Add predicate r_t@main,n TVLA: create_predicate 1, ptsto_[a@main] SA: Add predicate pt_a@main TVLA: create_instr_predicate 1, r_[a@main,n] SA: Add predicate r_a@main,n TVLA: create_predicate 1, ptsto_[tmp@main] SA: Add predicate pt_tmp@main TVLA: create_instr_predicate 1, r_[tmp@main,n] SA: Add predicate r_tmp@main,n TVLA: create_predicate 1, ptsto_[p@main] SA: Add predicate pt_p@main TVLA: create_instr_predicate 1, r_[p@main,n] SA: Add predicate r_p@main,n TVLA: create_predicate 1, content(\x. (* (x)).h==1) SA: Add predicate \x.(* (x)).h==1 TVLA: create_predicate 1, content(\x. (* (x)).h==2) SA: Add predicate \x.(* (x)).h==2 TVLA: create_predicate 1, content(\x. (* (x)).h==3) SA: Add predicate \x.(* (x)).h==3 SA> Saving state to SC <(default)> SA> Restoring state from SC <(default)> UL> Shape Analysis enabled Done adding seed predicates ********** Now running the model-checker ********** Glob useful preds Glob useful preds Entering parallel_model_check init region: [AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] error region: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Setting signal for 2000 seconds **************************************************************************** Next iteration of model-check's big while-loop 1 Now processing tree node: Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Was_Covered_To_Reprocess(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#1 src="alternating_list.c"; line=0 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Top RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Was_Covered_To_Reprocess(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) Updating the node's marking This node now looks like: Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Uncovered(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) cfLMC enters: __BLAST_initialize_alternating_list.c In post -- arguments are: [AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] Location: id=1#1 src="alternating_list.c"; line=0---FunctionCall(__BLAST_initialize_alternating_list.c())---> Location: id=1#2 (Artificial) tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In Deconstruct_fc :__BLAST_initialize_alternating_list.c() In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Top FunctionCall(__BLAST_initialize_alternating_list.c()) location (1,1) absdatapost postloc: (2,2) UL> Running post on command: UL> FunctionCall(__BLAST_initialize_alternating_list.c()) SA> Post of SA is called! SA> Post from top... starting from no information... SA> Switching SC: old = <(default)>; new = <(default)> SA> Saving state to SC <(default)> SA> Restoring state from SC <(default)> In Deconstruct_fc :__BLAST_initialize_alternating_list.c() In Deconstruct_fc :__BLAST_initialize_alternating_list.c() SA> Unhandled statement __BLAST_initialize_alternating_list.c() UL> Post returning predicates: UL> And [] Writing back post region New entry point for __BLAST_initialize_alternating_list.c lift_and_propagate Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 2 Now processing tree node: Node(edge=Location: id=1#1 src="alternating_list.c"; line=0---FunctionCall(__BLAST_initialize_alternating_list.c())---> Location: id=1#2 (Artificial), data=Data(id=2; kind=Entry; mark=Processed_Was_Covered_To_Reprocess(time_stamp=1; region=[AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))) RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=2#2 (Artificial) RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {} RGN> %p = { RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> [Location: id=1#1 src="alternating_list.c"; line=0]] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#1 src="alternating_list.c"; line=0---FunctionCall(__BLAST_initialize_alternating_list.c())---> Location: id=1#2 (Artificial), data=Data(id=2; kind=Entry; mark=Processed_Was_Covered_To_Reprocess(time_stamp=1; region=[AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))) Updating the node's marking This node now looks like: Node(edge=Location: id=1#1 src="alternating_list.c"; line=0---FunctionCall(__BLAST_initialize_alternating_list.c())---> Location: id=1#2 (Artificial), data=Data(id=2; kind=Entry; mark=Processed_Uncovered(time_stamp=1; region=[AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=2#2 (Artificial)---SymHook(__BLAST_initialize_alternating_list.c)---> Location: id=2#1 src="alternating_list.c"; line=0, data=Data(id=3; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 3 Now processing tree node: Node(edge=Location: id=2#2 (Artificial)---SymHook(__BLAST_initialize_alternating_list.c)---> Location: id=2#1 src="alternating_list.c"; line=0, data=Data(id=3; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] Location: id=2#2 (Artificial)---SymHook(__BLAST_initialize_alternating_list.c)---> Location: id=2#1 src="alternating_list.c"; line=0 tos_fname: __BLAST_initialize_alternating_list.c, tos_2_fname: main In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] SymHook(__BLAST_initialize_alternating_list.c) location (2,2) absdatapost postloc: (2,1) UL> Running post on command: UL> SymHook(__BLAST_initialize_alternating_list.c) SA> Post of SA is called! SA> Unhandled edge type SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=2#1 src="alternating_list.c"; line=0 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {} RGN> %p = { RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> [Location: id=1#1 src="alternating_list.c"; line=0]] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=2#2 (Artificial)---SymHook(__BLAST_initialize_alternating_list.c)---> Location: id=2#1 src="alternating_list.c"; line=0, data=Data(id=3; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=2#2 (Artificial)---SymHook(__BLAST_initialize_alternating_list.c)---> Location: id=2#1 src="alternating_list.c"; line=0, data=Data(id=3; kind=Node; mark=Processed_Uncovered(time_stamp=2; region=[AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))) It's a new exit point for __BLAST_initialize_alternating_list.c ! |entries| = 1 New summary edges to exit node. New summary edge! Node(edge=Location: id=1#1 src="alternating_list.c"; line=0---FunctionCall(__BLAST_initialize_alternating_list.c())---> Location: id=1#2 (Artificial), data=Data(id=2; kind=Entry; mark=Processed_Uncovered(time_stamp=1; region=[AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))) --> Node(edge=Location: id=2#1 src="alternating_list.c"; line=0---Block(Return(0);)---> Location: id=2#0 (Artificial), data=Data(id=4; kind=Exit; mark=Processed_Uncovered(time_stamp=3; region=[AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))) by way of lift_and_propagate In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] [AtomicRegion: Location: id=2#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] SA> TVLA: Cover result: YES SA> Cover -> YES A call site matched in lift_and_propagate. Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Uncovered(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) Now caller has 1 children.@. Summary edge added Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 4 Now processing tree node: Node(edge=SUMMARY Node(edge=Location: id=2#1 src="alternating_list.c"; line=0--- Block(Return(0);)--->Location: id=2#0 (Artificial), data=Data(id=4; kind=Exit; mark=Processed_Uncovered(time_stamp=3; region=[AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))), data=Data(id=5; kind=Node; mark=Unprocessed)) Summary Post Printing abstract data regions: [AtomicRegion: Location: id=1#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] [AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] In Deconstruct_fc :__BLAST_initialize_alternating_list.c() Target: * (sizeof(<0>)) Trivial post RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#2 (Artificial) RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {} RGN> %p = { RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=SUMMARY Node(edge=Location: id=2#1 src="alternating_list.c"; line=0--- Block(Return(0);)--->Location: id=2#0 (Artificial), data=Data(id=4; kind=Exit; mark=Processed_Uncovered(time_stamp=3; region=[AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))), data=Data(id=5; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=SUMMARY Node(edge=Location: id=2#1 src="alternating_list.c"; line=0--- Block(Return(0);)--->Location: id=2#0 (Artificial), data=Data(id=4; kind=Exit; mark=Processed_Uncovered(time_stamp=3; region=[AtomicRegion: Location: id=2#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: [Location: id=1#1 src="alternating_list.c"; line=0]] ))), data=Data(id=5; kind=Node; mark=Processed_Uncovered(time_stamp=4; region=[AtomicRegion: Location: id=1#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="alternating_list.c"; line=19, data=Data(id=6; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 5 Now processing tree node: Node(edge=Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="alternating_list.c"; line=19, data=Data(id=6; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#2 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="alternating_list.c"; line=19 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Skip location (1,2) absdatapost postloc: (1,3) UL> Running post on command: UL> Skip SA> Post of SA is called! SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#3 src="alternating_list.c"; line=19 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {} RGN> %p = { RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#3 src="alternating_list.c"; line=19 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#3 src="alternating_list.c"; line=19 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="alternating_list.c"; line=19, data=Data(id=6; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="alternating_list.c"; line=19, data=Data(id=6; kind=Node; mark=Processed_Uncovered(time_stamp=5; region=[AtomicRegion: Location: id=1#3 src="alternating_list.c"; line=19 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#3 src="alternating_list.c"; line=19---Block(flag@main = 1;)---> Location: id=1#4 src="alternating_list.c"; line=22, data=Data(id=7; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 6 Now processing tree node: Node(edge=Location: id=1#3 src="alternating_list.c"; line=19---Block(flag@main = 1;)---> Location: id=1#4 src="alternating_list.c"; line=22, data=Data(id=7; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#3 src="alternating_list.c"; line=19 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#3 src="alternating_list.c"; line=19---Block(flag@main = 1;)---> Location: id=1#4 src="alternating_list.c"; line=22 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(flag@main = 1;) location (1,3) absdatapost postloc: (1,4) UL> Running post on command: UL> Block(flag@main = 1;) SA> Post of SA is called! SA> Unhandled assignment (not tracked) flag@main=1 SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#4 src="alternating_list.c"; line=22 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {} RGN> %p = { RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#4 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#4 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#3 src="alternating_list.c"; line=19---Block(flag@main = 1;)---> Location: id=1#4 src="alternating_list.c"; line=22, data=Data(id=7; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#3 src="alternating_list.c"; line=19---Block(flag@main = 1;)---> Location: id=1#4 src="alternating_list.c"; line=22, data=Data(id=7; kind=Node; mark=Processed_Uncovered(time_stamp=6; region=[AtomicRegion: Location: id=1#4 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#4 src="alternating_list.c"; line=22---FunctionCall(tmp@main = malloc(512))---> Location: id=1#5 src="alternating_list.c"; line=22, data=Data(id=8; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 7 Now processing tree node: Node(edge=Location: id=1#4 src="alternating_list.c"; line=22---FunctionCall(tmp@main = malloc(512))---> Location: id=1#5 src="alternating_list.c"; line=22, data=Data(id=8; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#4 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#4 src="alternating_list.c"; line=22---FunctionCall(tmp@main = malloc(512))---> Location: id=1#5 src="alternating_list.c"; line=22 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In Deconstruct_fc :tmp@main=malloc(,512) In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] FunctionCall(tmp@main = malloc(512)) location (1,4) absdatapost postloc: (1,5) UL> Running post on command: UL> FunctionCall(tmp@main = malloc(512)) SA> Post of SA is called! In Deconstruct_fc :tmp@main=malloc(,512) In Deconstruct_fc :tmp@main=malloc(,512) SA> TVLA: Create action SA> TVLA: Its title is tmp@main = malloc() SA> TVLA: Create action SA> TVLA: Its title is tmp@main = NULL SA> Executing action |tmp@main = NULL UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#5 src="alternating_list.c"; line=22 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {} RGN> %p = { RGN> } RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#5 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[tmp@main] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#5 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[tmp@main] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#4 src="alternating_list.c"; line=22---FunctionCall(tmp@main = malloc(512))---> Location: id=1#5 src="alternating_list.c"; line=22, data=Data(id=8; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#4 src="alternating_list.c"; line=22---FunctionCall(tmp@main = malloc(512))---> Location: id=1#5 src="alternating_list.c"; line=22, data=Data(id=8; kind=Node; mark=Processed_Uncovered(time_stamp=7; region=[AtomicRegion: Location: id=1#5 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[tmp@main] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#5 src="alternating_list.c"; line=22---Block(a@main = tmp@main;)---> Location: id=1#6 src="alternating_list.c"; line=23, data=Data(id=9; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 8 Now processing tree node: Node(edge=Location: id=1#5 src="alternating_list.c"; line=22---Block(a@main = tmp@main;)---> Location: id=1#6 src="alternating_list.c"; line=23, data=Data(id=9; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#5 src="alternating_list.c"; line=22 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[tmp@main] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#5 src="alternating_list.c"; line=22---Block(a@main = tmp@main;)--->Location: id=1#6 src="alternating_list.c"; line=23 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[tmp@main] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(a@main = tmp@main;) location (1,5) absdatapost postloc: (1,6) UL> Running post on command: UL> Block(a@main = tmp@main;) SA> Post of SA is called! SA> TVLA: Create action SA> TVLA: Its title is a@main = tmp@main SA> Executing action a@main = tmp@main UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#6 src="alternating_list.c"; line=23 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {} RGN> %p = { RGN> } RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#6 src="alternating_list.c"; line=23 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#6 src="alternating_list.c"; line=23 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#5 src="alternating_list.c"; line=22---Block(a@main = tmp@main;)---> Location: id=1#6 src="alternating_list.c"; line=23, data=Data(id=9; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#5 src="alternating_list.c"; line=22---Block(a@main = tmp@main;)---> Location: id=1#6 src="alternating_list.c"; line=23, data=Data(id=9; kind=Node; mark=Processed_Uncovered(time_stamp=8; region=[AtomicRegion: Location: id=1#6 src="alternating_list.c"; line=23 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:2 Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main != 0)---> Location: id=1#10 src="alternating_list.c"; line=25, data=Data(id=11; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 9 Now processing tree node: Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main != 0)---> Location: id=1#10 src="alternating_list.c"; line=25, data=Data(id=11; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#6 src="alternating_list.c"; line=23 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main != 0)---> Location: id=1#10 src="alternating_list.c"; line=25 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(a@main != 0) location (1,6) absdatapost postloc: (1,10) UL> Running post on command: UL> Pred(a@main != 0) SA> Post of SA is called! bs_assert: And [* (p@main ).h == 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > 15: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 16: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 17: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 18: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 19: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 20: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 21: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 22: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 23: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 24: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 25: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 26: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 27: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 28: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 29: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 30: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 31: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 32: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 33: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 34: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 35: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 36: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 37: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, a@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, a@main != 0] Simplify Assuming: (AND (NEQ v3 0) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 38: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> TVLA: Create action SA> TVLA: Its title is a@main != NULL SA> Executing action a@main != NULL UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#10 src="alternating_list.c"; line=25 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#10 src="alternating_list.c"; line=25 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#10 src="alternating_list.c"; line=25 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main != 0)---> Location: id=1#10 src="alternating_list.c"; line=25, data=Data(id=11; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main != 0)---> Location: id=1#10 src="alternating_list.c"; line=25, data=Data(id=11; kind=Node; mark=Processed_Uncovered(time_stamp=9; region=[AtomicRegion: Location: id=1#10 src="alternating_list.c"; line=25 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:2 Node(edge=Location: id=1#10 src="alternating_list.c"; line=25---Block(p@main = a@main;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 10 Now processing tree node: Node(edge=Location: id=1#10 src="alternating_list.c"; line=25---Block(p@main = a@main;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=12; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#10 src="alternating_list.c"; line=25 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#10 src="alternating_list.c"; line=25---Block(p@main = a@main;)---> Location: id=1#11 src="alternating_list.c"; line=26 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(p@main = a@main;) location (1,10) absdatapost postloc: (1,11) UL> Running post on command: UL> Block(p@main = a@main;) SA> Post of SA is called! SA> TVLA: Create action SA> TVLA: Its title is p@main = a@main SA> Executing action p@main = a@main UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#11 src="alternating_list.c"; line=26 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#10 src="alternating_list.c"; line=25---Block(p@main = a@main;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=12; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#10 src="alternating_list.c"; line=25---Block(p@main = a@main;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=12; kind=Node; mark=Processed_Uncovered(time_stamp=10; region=[AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:2 Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 11 Now processing tree node: Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=14; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)--->Location: id=1#13 src="alternating_list.c"; line=39 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(true) location (1,11) absdatapost postloc: (1,13) UL> Running post on command: UL> Pred(true) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 39: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 3 Simplify Assuming: (NEQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 40: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 3 Simplify Assuming: (EQ (select (select v4 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 41: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 3 Simplify Assuming: (NEQ (select (select v4 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 42: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 3 Simplify Assuming: (EQ (select (select v3 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 43: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 3 Simplify Assuming: (NEQ (select (select v3 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 44: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 3 Simplify Assuming: (EQ (select (select v5 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 45: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 3 Simplify Assuming: (NEQ (select (select v5 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 46: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 2 Simplify Assuming: (EQ (select (select v2 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 47: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 2 Simplify Assuming: (NEQ (select (select v2 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 48: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 2 Simplify Assuming: (EQ (select (select v4 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 49: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 2 Simplify Assuming: (NEQ (select (select v4 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 50: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 2 Simplify Assuming: (EQ (select (select v3 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 51: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 2 Simplify Assuming: (NEQ (select (select v3 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 52: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 2 Simplify Assuming: (EQ (select (select v5 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 53: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 2 Simplify Assuming: (NEQ (select (select v5 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 54: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 1 Simplify Assuming: (EQ (select (select v2 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 55: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 1 Simplify Assuming: (NEQ (select (select v2 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 56: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 1 Simplify Assuming: (EQ (select (select v4 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 57: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 1 Simplify Assuming: (NEQ (select (select v4 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 58: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 1 Simplify Assuming: (EQ (select (select v3 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 59: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 1 Simplify Assuming: (NEQ (select (select v3 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 60: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 1 Simplify Assuming: (EQ (select (select v5 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 61: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 1 Simplify Assuming: (NEQ (select (select v5 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 62: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#13 src="alternating_list.c"; line=39 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=14; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=14; kind=Node; mark=Processed_Uncovered(time_stamp=11; region=[AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=15; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 12 Now processing tree node: Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=15; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;) location (1,13) absdatapost postloc: (1,24) UL> Running post on command: UL> Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 63: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 64: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 65: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 66: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 67: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 68: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 69: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 70: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 71: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==2 bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 72: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 73: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 74: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 75: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 76: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 77: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 78: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==1 bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 79: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 80: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 81: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 82: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 83: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 84: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> TVLA: Create action SA> TVLA: Its title is force {p@main/x}(* (x)).h==3 SA> TVLA: Create action SA> TVLA: Its title is force !{p@main/x}(* (x)).h==1 bs_assert: And [Not (* (x ).h == 1), Not (* (x ).h == 3)] simplify_assume sstk:0 convertToSimplifySyntax exp = And [Not (* (x ).h == 1), Not (* (x ).h == 3)] Simplify Assuming: (AND (NOT (EQ (select (select v6 0) v1) 3)) (AND (NOT (EQ (select (select v6 0) v1) 1)) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 85: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [Not (* (x ).h == 1), Not (* (x ).h == 2)] simplify_assume sstk:0 convertToSimplifySyntax exp = And [Not (* (x ).h == 1), Not (* (x ).h == 2)] Simplify Assuming: (AND (NOT (EQ (select (select v6 0) v1) 2)) (AND (NOT (EQ (select (select v6 0) v1) 1)) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 86: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> TVLA: Create action SA> TVLA: Its title is force !{p@main/x}(* (x)).h==2 bs_assert: And [Not (* (x ).h == 2), Not (* (x ).h == 3)] simplify_assume sstk:0 convertToSimplifySyntax exp = And [Not (* (x ).h == 2), Not (* (x ).h == 3)] Simplify Assuming: (AND (NOT (EQ (select (select v6 0) v1) 3)) (AND (NOT (EQ (select (select v6 0) v1) 2)) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 87: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [Not (* (x ).h == 2), Not (* (x ).h == 1)] simplify_assume sstk:0 convertToSimplifySyntax exp = And [Not (* (x ).h == 2), Not (* (x ).h == 1)] Simplify Assuming: (AND (NOT (EQ (select (select v6 0) v1) 1)) (AND (NOT (EQ (select (select v6 0) v1) 2)) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 88: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Unhandled assignment (not tracked) flag@main=1 SA> Executing action force {p@main/x}(* (x)).h==3 SA> Executing action force !{p@main/x}(* (x)).h==1 SA> Executing action force !{p@main/x}(* (x)).h==2 SA> Executing action p@main = a@main UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#24 src="alternating_list.c"; line=44 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==3) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=15; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=15; kind=Node; mark=Processed_Uncovered(time_stamp=12; region=[AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=16; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=16; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 13 Now processing tree node: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=17; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#24 src="alternating_list.c"; line=44---Pred(* (p@main ).h == 3)--->Location: id=1#26 src="alternating_list.c"; line=57 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(* (p@main ).h == 3) location (1,24) absdatapost postloc: (1,26) UL> Running post on command: UL> Pred(* (p@main ).h == 3) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 89: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 90: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 91: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 92: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 93: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 94: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 95: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 96: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 97: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==2 bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 98: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 99: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 100: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 101: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 102: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 103: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 104: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==1 bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 105: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 106: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 107: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 108: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 109: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 110: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Don't have default action for atom predicate (* (p@main)).h==3 SA> TVLA: Create action SA> TVLA: Its title is {p@main/x}(* (x)).h==3 SA> TVLA: Create action SA> TVLA: Its title is ! {p@main/x}(* (x)).h==1 SA> TVLA: Create action SA> TVLA: Its title is ! {p@main/x}(* (x)).h==2 SA> Executing action {p@main/x}(* (x)).h==3 SA> Executing action ! {p@main/x}(* (x)).h==1 SA> Executing action ! {p@main/x}(* (x)).h==2 UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#26 src="alternating_list.c"; line=57 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==3) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=17; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=17; kind=Node; mark=Processed_Uncovered(time_stamp=13; region=[AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#26 src="alternating_list.c"; line=57---Block(__retres@main = 0;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=18; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=16; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 14 Now processing tree node: Node(edge=Location: id=1#26 src="alternating_list.c"; line=57---Block(__retres@main = 0;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=18; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#26 src="alternating_list.c"; line=57---Block(__retres@main = 0;)--->Location: id=1#34 src="alternating_list.c"; line=17 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(__retres@main = 0;) location (1,26) absdatapost postloc: (1,34) UL> Running post on command: UL> Block(__retres@main = 0;) SA> Post of SA is called! SA> Unhandled assignment (not tracked) __retres@main=0 SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#34 src="alternating_list.c"; line=17 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==3) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#26 src="alternating_list.c"; line=57---Block(__retres@main = 0;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=18; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#26 src="alternating_list.c"; line=57---Block(__retres@main = 0;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=18; kind=Node; mark=Processed_Uncovered(time_stamp=14; region=[AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) It's a new exit point for main ! |entries| = 1 New summary edges to exit node. New summary edge! Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Uncovered(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) --> Node(edge=Location: id=1#34 src="alternating_list.c"; line=17---Block(Return(__retres@main);)---> Location: id=1#0 (Artificial), data=Data(id=19; kind=Exit; mark=Processed_Uncovered(time_stamp=15; region=[AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) by way of Summary edge added Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 15 Now processing tree node: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=16; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#24 src="alternating_list.c"; line=44---Pred(* (p@main ).h != 3)--->Location: id=1#25 src="alternating_list.c"; line=45 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(* (p@main ).h != 3) location (1,24) absdatapost postloc: (1,25) UL> Running post on command: UL> Pred(* (p@main ).h != 3) SA> Post of SA is called! bs_assert: And [* (p@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 111: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 112: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 113: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 114: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 115: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 116: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 117: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 118: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 119: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 120: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 121: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 122: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 123: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 124: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 125: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 126: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 127: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 128: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 129: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 130: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 131: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 132: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 133: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Don't have default action for atom predicate (* (p@main)).h!=3 SA> TVLA: Create action SA> TVLA: Its title is ! {p@main/x}(* (x)).h==3 SA> Executing action ! {p@main/x}(* (x)).h==3 SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#25 src="alternating_list.c"; line=45 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=16; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=16; kind=Node; mark=Processed_Uncovered(time_stamp=16; region=[AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main == 0)---> Location: id=1#28 src="alternating_list.c"; line=50, data=Data(id=21; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 16 Now processing tree node: Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main == 0)---> Location: id=1#28 src="alternating_list.c"; line=50, data=Data(id=21; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#25 src="alternating_list.c"; line=45---Pred(flag@main == 0)---> Location: id=1#28 src="alternating_list.c"; line=50 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Pred(flag@main == 0) location (1,25) absdatapost postloc: (1,28) UL> Running post on command: UL> Pred(flag@main == 0) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#28 src="alternating_list.c"; line=50 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#28 src="alternating_list.c"; line=50 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#28 src="alternating_list.c"; line=50 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main == 0)---> Location: id=1#28 src="alternating_list.c"; line=50, data=Data(id=21; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main == 0)---> Location: id=1#28 src="alternating_list.c"; line=50, data=Data(id=21; kind=Node; mark=Processed_Uncovered(time_stamp=17; region=[AtomicRegion: Location: id=1#28 src="alternating_list.c"; line=50 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#28 src="alternating_list.c"; line=50---Block(flag@main = 1;)---> Location: id=1#36 src="alternating_list.c"; line=51, data=Data(id=22; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 17 Now processing tree node: Node(edge=Location: id=1#28 src="alternating_list.c"; line=50---Block(flag@main = 1;)---> Location: id=1#36 src="alternating_list.c"; line=51, data=Data(id=22; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#28 src="alternating_list.c"; line=50 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#28 src="alternating_list.c"; line=50---Block(flag@main = 1;)---> Location: id=1#36 src="alternating_list.c"; line=51 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Block(flag@main = 1;) location (1,28) absdatapost postloc: (1,36) UL> Running post on command: UL> Block(flag@main = 1;) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#36 src="alternating_list.c"; line=51 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#36 src="alternating_list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#36 src="alternating_list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#28 src="alternating_list.c"; line=50---Block(flag@main = 1;)---> Location: id=1#36 src="alternating_list.c"; line=51, data=Data(id=22; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#28 src="alternating_list.c"; line=50---Block(flag@main = 1;)---> Location: id=1#36 src="alternating_list.c"; line=51, data=Data(id=22; kind=Node; mark=Processed_Uncovered(time_stamp=18; region=[AtomicRegion: Location: id=1#36 src="alternating_list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h == 2)---> Location: id=1#31 src="alternating_list.c"; line=54, data=Data(id=24; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 18 Now processing tree node: Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h == 2)---> Location: id=1#31 src="alternating_list.c"; line=54, data=Data(id=24; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#36 src="alternating_list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#36 src="alternating_list.c"; line=51---Pred(* (p@main ).h == 2)--->Location: id=1#31 src="alternating_list.c"; line=54 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Pred(* (p@main ).h == 2) location (1,36) absdatapost postloc: (1,31) UL> Running post on command: UL> Pred(* (p@main ).h == 2) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#31 src="alternating_list.c"; line=54 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h == 2)---> Location: id=1#31 src="alternating_list.c"; line=54, data=Data(id=24; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h == 2)---> Location: id=1#31 src="alternating_list.c"; line=54, data=Data(id=24; kind=Node; mark=Processed_Uncovered(time_stamp=19; region=[AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#31 src="alternating_list.c"; line=54---Block(p@main = * (p@main ).n;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=25; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 19 Now processing tree node: Node(edge=Location: id=1#31 src="alternating_list.c"; line=54---Block(p@main = * (p@main ).n;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=25; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#31 src="alternating_list.c"; line=54---Block(p@main = * (p@main ).n;)---> Location: id=1#24 src="alternating_list.c"; line=44 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Block(p@main = * (p@main ).n;) location (1,31) absdatapost postloc: (1,24) UL> Running post on command: UL> Block(p@main = * (p@main ).n;) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#24 src="alternating_list.c"; line=44 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> NO found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#31 src="alternating_list.c"; line=54---Block(p@main = * (p@main ).n;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=25; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#31 src="alternating_list.c"; line=54---Block(p@main = * (p@main ).n;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=25; kind=Node; mark=Processed_Uncovered(time_stamp=20; region=[AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=26; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:6 Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=27; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=26; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 20 Now processing tree node: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=27; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#24 src="alternating_list.c"; line=44---Pred(* (p@main ).h == 3)--->Location: id=1#26 src="alternating_list.c"; line=57 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(* (p@main ).h == 3) location (1,24) absdatapost postloc: (1,26) UL> Running post on command: UL> Pred(* (p@main ).h == 3) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 134: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 135: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 136: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 137: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 138: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 139: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 140: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 141: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 142: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==2 bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 143: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 144: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 145: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 146: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 147: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 148: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 149: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==1 bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 150: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 151: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 152: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 153: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 154: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 155: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Don't have default action for atom predicate (* (p@main)).h==3 SA> Executing action {p@main/x}(* (x)).h==3 SA> Executing action ! {p@main/x}(* (x)).h==1 SA> Executing action ! {p@main/x}(* (x)).h==2 UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#26 src="alternating_list.c"; line=57 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==3) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] BY: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=17; kind=Node; mark=Processed_Uncovered(time_stamp=13; region=[AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) NEW SUMMARIES 1 vs. 1 New summary edge! Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Uncovered(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) --> Node(edge=Location: id=1#34 src="alternating_list.c"; line=17---Block(Return(__retres@main);)---> Location: id=1#0 (Artificial), data=Data(id=19; kind=Exit; mark=Processed_Uncovered(time_stamp=15; region=[AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) by way of Summary edge added **************************************************************************** Next iteration of model-check's big while-loop 21 Now processing tree node: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=26; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#24 src="alternating_list.c"; line=44---Pred(* (p@main ).h != 3)--->Location: id=1#25 src="alternating_list.c"; line=45 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(* (p@main ).h != 3) location (1,24) absdatapost postloc: (1,25) UL> Running post on command: UL> Pred(* (p@main ).h != 3) SA> Post of SA is called! bs_assert: And [* (p@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 156: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 157: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 158: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 159: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 160: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 161: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 162: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 163: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 164: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 165: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 166: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 167: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 168: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 169: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 170: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 171: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 172: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 173: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 174: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 175: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 176: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 177: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h != 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h != 3] Simplify Assuming: (AND (NEQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 178: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Don't have default action for atom predicate (* (p@main)).h!=3 SA> Executing action ! {p@main/x}(* (x)).h==3 SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#25 src="alternating_list.c"; line=45 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] BY: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=16; kind=Node; mark=Processed_Uncovered(time_stamp=16; region=[AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) NEW SUMMARIES 1 vs. 0 **************************************************************************** Next iteration of model-check's big while-loop 22 Now processing tree node: Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#36 src="alternating_list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#36 src="alternating_list.c"; line=51---Pred(* (p@main ).h != 2)--->Location: id=1#30 src="alternating_list.c"; line=60 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Pred(* (p@main ).h != 2) location (1,36) absdatapost postloc: (1,30) UL> Running post on command: UL> Pred(* (p@main ).h != 2) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#30 src="alternating_list.c"; line=60 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Processed_Uncovered(time_stamp=23; region=[AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#30 src="alternating_list.c"; line=60---FunctionCall(printf("Alternation violation found.\n"))---> Location: id=1#32 (Artificial), data=Data(id=28; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 23 Now processing tree node: Node(edge=Location: id=1#30 src="alternating_list.c"; line=60---FunctionCall(printf("Alternation violation found.\n"))---> Location: id=1#32 (Artificial), data=Data(id=28; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#30 src="alternating_list.c"; line=60---FunctionCall(printf("Alternation violation found.\n"))---> Location: id=1#32 (Artificial) tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In Deconstruct_fc :printf(,"Alternation violation found.\n") In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom FunctionCall(printf("Alternation violation found.\n")) location (1,30) absdatapost postloc: (1,32) UL> Running post on command: UL> FunctionCall(printf("Alternation violation found.\n")) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#32 (Artificial) RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#32 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#32 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#30 src="alternating_list.c"; line=60---FunctionCall(printf("Alternation violation found.\n"))---> Location: id=1#32 (Artificial), data=Data(id=28; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#30 src="alternating_list.c"; line=60---FunctionCall(printf("Alternation violation found.\n"))---> Location: id=1#32 (Artificial), data=Data(id=28; kind=Node; mark=Processed_Uncovered(time_stamp=24; region=[AtomicRegion: Location: id=1#32 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#32 (Artificial)---Skip--->Location: id=1#33 src="alternating_list.c"; line=61, data=Data(id=29; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 24 Now processing tree node: Node(edge=Location: id=1#32 (Artificial)---Skip--->Location: id=1#33 src="alternating_list.c"; line=61, data=Data(id=29; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#32 (Artificial) AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#32 (Artificial)---Skip--->Location: id=1#33 src="alternating_list.c"; line=61 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Skip location (1,32) absdatapost postloc: (1,33) UL> Running post on command: UL> Skip SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#33 src="alternating_list.c"; line=61 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#33 src="alternating_list.c"; line=61 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#33 src="alternating_list.c"; line=61 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#32 (Artificial)---Skip--->Location: id=1#33 src="alternating_list.c"; line=61, data=Data(id=29; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#32 (Artificial)---Skip--->Location: id=1#33 src="alternating_list.c"; line=61, data=Data(id=29; kind=Node; mark=Processed_Uncovered(time_stamp=25; region=[AtomicRegion: Location: id=1#33 src="alternating_list.c"; line=61 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#33 src="alternating_list.c"; line=61---Block(__retres@main = 1;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=30; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 25 Now processing tree node: Node(edge=Location: id=1#33 src="alternating_list.c"; line=61---Block(__retres@main = 1;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=30; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#33 src="alternating_list.c"; line=61 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#33 src="alternating_list.c"; line=61---Block(__retres@main = 1;)--->Location: id=1#34 src="alternating_list.c"; line=17 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Block(__retres@main = 1;) location (1,33) absdatapost postloc: (1,34) UL> Running post on command: UL> Block(__retres@main = 1;) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#34 src="alternating_list.c"; line=17 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> NO found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#33 src="alternating_list.c"; line=61---Block(__retres@main = 1;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=30; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#33 src="alternating_list.c"; line=61---Block(__retres@main = 1;)---> Location: id=1#34 src="alternating_list.c"; line=17, data=Data(id=30; kind=Node; mark=Processed_Uncovered(time_stamp=26; region=[AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) It's a new exit point for main ! |entries| = 1 New summary edges to exit node. New summary edge! Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Uncovered(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) --> Node(edge=Location: id=1#34 src="alternating_list.c"; line=17---Block(Return(__retres@main);)---> Location: id=1#0 (Artificial), data=Data(id=31; kind=Exit; mark=Processed_Uncovered(time_stamp=27; region=[AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) by way of Summary edge added Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 26 Now processing tree node: Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#25 src="alternating_list.c"; line=45 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#25 src="alternating_list.c"; line=45---Pred(flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Pred(flag@main != 0) location (1,25) absdatapost postloc: (1,27) UL> Running post on command: UL> Pred(flag@main != 0) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#27 src="alternating_list.c"; line=46 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#27 src="alternating_list.c"; line=46 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#27 src="alternating_list.c"; line=46 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#25 src="alternating_list.c"; line=45---Pred( flag@main != 0)---> Location: id=1#27 src="alternating_list.c"; line=46, data=Data(id=20; kind=Node; mark=Processed_Uncovered(time_stamp=28; region=[AtomicRegion: Location: id=1#27 src="alternating_list.c"; line=46 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#27 src="alternating_list.c"; line=46---Block(flag@main = 0;)---> Location: id=1#29 src="alternating_list.c"; line=47, data=Data(id=32; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 27 Now processing tree node: Node(edge=Location: id=1#27 src="alternating_list.c"; line=46---Block(flag@main = 0;)---> Location: id=1#29 src="alternating_list.c"; line=47, data=Data(id=32; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#27 src="alternating_list.c"; line=46 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#27 src="alternating_list.c"; line=46---Block(flag@main = 0;)---> Location: id=1#29 src="alternating_list.c"; line=47 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Block(flag@main = 0;) location (1,27) absdatapost postloc: (1,29) UL> Running post on command: UL> Block(flag@main = 0;) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#29 src="alternating_list.c"; line=47 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#29 src="alternating_list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#29 src="alternating_list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#27 src="alternating_list.c"; line=46---Block(flag@main = 0;)---> Location: id=1#29 src="alternating_list.c"; line=47, data=Data(id=32; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#27 src="alternating_list.c"; line=46---Block(flag@main = 0;)---> Location: id=1#29 src="alternating_list.c"; line=47, data=Data(id=32; kind=Node; mark=Processed_Uncovered(time_stamp=29; region=[AtomicRegion: Location: id=1#29 src="alternating_list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#29 src="alternating_list.c"; line=47---Pred( * (p@main ).h != 1)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#29 src="alternating_list.c"; line=47---Pred( * (p@main ).h == 1)---> Location: id=1#31 src="alternating_list.c"; line=54, data=Data(id=34; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="alternating_list.c"; line=47---Pred( * (p@main ).h != 1)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 28 Now processing tree node: Node(edge=Location: id=1#29 src="alternating_list.c"; line=47---Pred( * (p@main ).h == 1)---> Location: id=1#31 src="alternating_list.c"; line=54, data=Data(id=34; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#29 src="alternating_list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#29 src="alternating_list.c"; line=47---Pred(* (p@main ).h == 1)--->Location: id=1#31 src="alternating_list.c"; line=54 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Pred(* (p@main ).h == 1) location (1,29) absdatapost postloc: (1,31) UL> Running post on command: UL> Pred(* (p@main ).h == 1) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#31 src="alternating_list.c"; line=54 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] BY: Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h == 2)---> Location: id=1#31 src="alternating_list.c"; line=54, data=Data(id=24; kind=Node; mark=Processed_Uncovered(time_stamp=19; region=[AtomicRegion: Location: id=1#31 src="alternating_list.c"; line=54 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) NEW SUMMARIES 1 vs. 0 **************************************************************************** Next iteration of model-check's big while-loop 29 Now processing tree node: Node(edge=Location: id=1#29 src="alternating_list.c"; line=47---Pred( * (p@main ).h != 1)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=33; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#29 src="alternating_list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#29 src="alternating_list.c"; line=47---Pred(* (p@main ).h != 1)--->Location: id=1#30 src="alternating_list.c"; line=60 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Bottom Pred(* (p@main ).h != 1) location (1,29) absdatapost postloc: (1,30) UL> Running post on command: UL> Pred(* (p@main ).h != 1) SA> Post of SA is called! SA> Post from bottom... returning bottom SA> Unsatisfiable post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#30 src="alternating_list.c"; line=60 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] BY: Node(edge=Location: id=1#36 src="alternating_list.c"; line=51---Pred( * (p@main ).h != 2)---> Location: id=1#30 src="alternating_list.c"; line=60, data=Data(id=23; kind=Node; mark=Processed_Uncovered(time_stamp=23; region=[AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) NEW SUMMARIES 1 vs. 1 New summary edge! Node(edge=NONE, data=Data(id=0; kind=Entry; mark=Processed_Uncovered(time_stamp=0; region=[AtomicRegion: Location: id=1#1 src="alternating_list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) --> Node(edge=Location: id=1#34 src="alternating_list.c"; line=17---Block(Return(__retres@main);)---> Location: id=1#0 (Artificial), data=Data(id=31; kind=Exit; mark=Processed_Uncovered(time_stamp=27; region=[AtomicRegion: Location: id=1#34 src="alternating_list.c"; line=17 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) by way of Summary edge added **************************************************************************** Next iteration of model-check's big while-loop 30 Now processing tree node: Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)--->Location: id=1#12 src="alternating_list.c"; line=27 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(true) location (1,11) absdatapost postloc: (1,12) UL> Running post on command: UL> Pred(true) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 179: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 3 Simplify Assuming: (NEQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 180: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 3 Simplify Assuming: (EQ (select (select v4 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 181: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 3 Simplify Assuming: (NEQ (select (select v4 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 182: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 3 Simplify Assuming: (EQ (select (select v3 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 183: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 3 Simplify Assuming: (NEQ (select (select v3 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 184: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 3 Simplify Assuming: (EQ (select (select v5 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 185: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 3 Simplify Assuming: (NEQ (select (select v5 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 186: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 2 Simplify Assuming: (EQ (select (select v2 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 187: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 2 Simplify Assuming: (NEQ (select (select v2 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 188: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 2 Simplify Assuming: (EQ (select (select v4 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 189: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 2 Simplify Assuming: (NEQ (select (select v4 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 190: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 2 Simplify Assuming: (EQ (select (select v3 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 191: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 2 Simplify Assuming: (NEQ (select (select v3 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 192: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 2 Simplify Assuming: (EQ (select (select v5 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 193: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 2 Simplify Assuming: (NEQ (select (select v5 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 194: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 1 Simplify Assuming: (EQ (select (select v2 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 195: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 1 Simplify Assuming: (NEQ (select (select v2 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 196: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 1 Simplify Assuming: (EQ (select (select v4 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 197: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 1 Simplify Assuming: (NEQ (select (select v4 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 198: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 1 Simplify Assuming: (EQ (select (select v3 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 199: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 1 Simplify Assuming: (NEQ (select (select v3 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 200: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 1 Simplify Assuming: (EQ (select (select v5 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 201: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 1 Simplify Assuming: (NEQ (select (select v5 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 202: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#12 src="alternating_list.c"; line=27 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#12 src="alternating_list.c"; line=27 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#12 src="alternating_list.c"; line=27 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=13; kind=Node; mark=Processed_Uncovered(time_stamp=32; region=[AtomicRegion: Location: id=1#12 src="alternating_list.c"; line=27 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:2 Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main == 0)---> Location: id=1#15 src="alternating_list.c"; line=31, data=Data(id=36; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 31 Now processing tree node: Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main == 0)---> Location: id=1#15 src="alternating_list.c"; line=31, data=Data(id=36; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#12 src="alternating_list.c"; line=27 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#12 src="alternating_list.c"; line=27---Pred(flag@main == 0)---> Location: id=1#15 src="alternating_list.c"; line=31 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(flag@main == 0) location (1,12) absdatapost postloc: (1,15) UL> Running post on command: UL> Pred(flag@main == 0) SA> Post of SA is called! bs_assert: And [* (p@main ).h == 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 203: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 204: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 205: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 206: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 207: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 208: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 209: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 210: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 211: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 212: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 213: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 214: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 215: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 216: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 217: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 218: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 219: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 220: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 221: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 222: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 223: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 224: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 225: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, flag@main == 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, flag@main == 0] Simplify Assuming: (AND (EQ v7 0) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 226: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Don't have default action for atom predicate flag@main==0 SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#15 src="alternating_list.c"; line=31 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#15 src="alternating_list.c"; line=31 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#15 src="alternating_list.c"; line=31 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main == 0)---> Location: id=1#15 src="alternating_list.c"; line=31, data=Data(id=36; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main == 0)---> Location: id=1#15 src="alternating_list.c"; line=31, data=Data(id=36; kind=Node; mark=Processed_Uncovered(time_stamp=33; region=[AtomicRegion: Location: id=1#15 src="alternating_list.c"; line=31 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#15 src="alternating_list.c"; line=31---Block(* (p@main ).h = 2;flag@main = 1;)---> Location: id=1#16 src="alternating_list.c"; line=34, data=Data(id=37; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 32 Now processing tree node: Node(edge=Location: id=1#15 src="alternating_list.c"; line=31---Block(* (p@main ).h = 2;flag@main = 1;)---> Location: id=1#16 src="alternating_list.c"; line=34, data=Data(id=37; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#15 src="alternating_list.c"; line=31 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#15 src="alternating_list.c"; line=31---Block(* (p@main ).h = 2;flag@main = 1;)---> Location: id=1#16 src="alternating_list.c"; line=34 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(* (p@main ).h = 2;flag@main = 1;) location (1,15) absdatapost postloc: (1,16) UL> Running post on command: UL> Block(* (p@main ).h = 2;flag@main = 1;) SA> Post of SA is called! bs_assert: And [* (p@main ).h == 3, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 227: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 228: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 229: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 230: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 231: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 232: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 233: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 2 Simplify Assuming: (EQ (select (select v2 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 234: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 2, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 235: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==2 bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 236: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 237: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 238: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 239: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 240: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 241: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 242: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==1 bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 243: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 244: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 245: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 246: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 247: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 2) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 248: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> TVLA: Create action SA> TVLA: Its title is force {p@main/x}(* (x)).h==2 SA> TVLA: Create action SA> TVLA: Its title is force !{p@main/x}(* (x)).h==3 bs_assert: And [Not (* (x ).h == 3), Not (* (x ).h == 2)] simplify_assume sstk:0 convertToSimplifySyntax exp = And [Not (* (x ).h == 3), Not (* (x ).h == 2)] Simplify Assuming: (AND (NOT (EQ (select (select v6 0) v1) 2)) (AND (NOT (EQ (select (select v6 0) v1) 3)) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 249: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [Not (* (x ).h == 3), Not (* (x ).h == 1)] simplify_assume sstk:0 convertToSimplifySyntax exp = And [Not (* (x ).h == 3), Not (* (x ).h == 1)] Simplify Assuming: (AND (NOT (EQ (select (select v6 0) v1) 1)) (AND (NOT (EQ (select (select v6 0) v1) 3)) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 250: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Unhandled assignment (not tracked) flag@main=1 SA> Executing action force {p@main/x}(* (x)).h==2 SA> Executing action force !{p@main/x}(* (x)).h==1 SA> Executing action force !{p@main/x}(* (x)).h==3 UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#16 src="alternating_list.c"; line=34 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==2) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#16 src="alternating_list.c"; line=34 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#16 src="alternating_list.c"; line=34 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#15 src="alternating_list.c"; line=31---Block(* (p@main ).h = 2;flag@main = 1;)---> Location: id=1#16 src="alternating_list.c"; line=34, data=Data(id=37; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#15 src="alternating_list.c"; line=31---Block(* (p@main ).h = 2;flag@main = 1;)---> Location: id=1#16 src="alternating_list.c"; line=34, data=Data(id=37; kind=Node; mark=Processed_Uncovered(time_stamp=34; region=[AtomicRegion: Location: id=1#16 src="alternating_list.c"; line=34 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#16 src="alternating_list.c"; line=34---FunctionCall(t@main = malloc(512))---> Location: id=1#17 src="alternating_list.c"; line=35, data=Data(id=38; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 33 Now processing tree node: Node(edge=Location: id=1#16 src="alternating_list.c"; line=34---FunctionCall(t@main = malloc(512))---> Location: id=1#17 src="alternating_list.c"; line=35, data=Data(id=38; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#16 src="alternating_list.c"; line=34 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#16 src="alternating_list.c"; line=34---FunctionCall(t@main = malloc(512))---> Location: id=1#17 src="alternating_list.c"; line=35 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In Deconstruct_fc :t@main=malloc(,512) In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] FunctionCall(t@main = malloc(512)) location (1,16) absdatapost postloc: (1,17) UL> Running post on command: UL> FunctionCall(t@main = malloc(512)) SA> Post of SA is called! In Deconstruct_fc :t@main=malloc(,512) In Deconstruct_fc :t@main=malloc(,512) SA> TVLA: Create action SA> TVLA: Its title is t@main = malloc() SA> TVLA: Create action SA> TVLA: Its title is t@main = NULL SA> Executing action |t@main = NULL UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#17 src="alternating_list.c"; line=35 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==2) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> %n = {_1, _0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_1:1/2} RGN> content(\x. (* (x)).h==2) = {_1:1/2, _0:1} RGN> content(\x. (* (x)).h==3) = {_1:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[t@main] = {_1:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[t@main,n] = {_1:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#17 src="alternating_list.c"; line=35 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#17 src="alternating_list.c"; line=35 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#16 src="alternating_list.c"; line=34---FunctionCall(t@main = malloc(512))---> Location: id=1#17 src="alternating_list.c"; line=35, data=Data(id=38; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#16 src="alternating_list.c"; line=34---FunctionCall(t@main = malloc(512))---> Location: id=1#17 src="alternating_list.c"; line=35, data=Data(id=38; kind=Node; mark=Processed_Uncovered(time_stamp=35; region=[AtomicRegion: Location: id=1#17 src="alternating_list.c"; line=35 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main != 0)---> Location: id=1#21 src="alternating_list.c"; line=36, data=Data(id=40; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 34 Now processing tree node: Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main != 0)---> Location: id=1#21 src="alternating_list.c"; line=36, data=Data(id=40; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#17 src="alternating_list.c"; line=35 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#17 src="alternating_list.c"; line=35---Pred(t@main != 0)---> Location: id=1#21 src="alternating_list.c"; line=36 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==2) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(t@main != 0) location (1,17) absdatapost postloc: (1,21) UL> Running post on command: UL> Pred(t@main != 0) SA> Post of SA is called! bs_assert: And [* (p@main ).h == 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 251: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 252: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 253: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 254: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 255: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 256: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 257: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 258: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 259: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 260: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 261: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 262: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 263: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 264: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 265: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 266: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 267: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 268: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h == 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 269: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 270: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 271: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 272: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 273: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, t@main != 0] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, t@main != 0] Simplify Assuming: (AND (NEQ v5 0) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 274: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> TVLA: Create action SA> TVLA: Its title is t@main != NULL SA> Executing action t@main != NULL UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#21 src="alternating_list.c"; line=36 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_1, _0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_1:1/2} RGN> content(\x. (* (x)).h==2) = {_1:1/2, _0:1} RGN> content(\x. (* (x)).h==3) = {_1:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[t@main] = {_1:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[t@main,n] = {_1:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#21 src="alternating_list.c"; line=36 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#21 src="alternating_list.c"; line=36 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main != 0)---> Location: id=1#21 src="alternating_list.c"; line=36, data=Data(id=40; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main != 0)---> Location: id=1#21 src="alternating_list.c"; line=36, data=Data(id=40; kind=Node; mark=Processed_Uncovered(time_stamp=36; region=[AtomicRegion: Location: id=1#21 src="alternating_list.c"; line=36 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#21 src="alternating_list.c"; line=36---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=41; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 35 Now processing tree node: Node(edge=Location: id=1#21 src="alternating_list.c"; line=36---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=41; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#21 src="alternating_list.c"; line=36 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#21 src="alternating_list.c"; line=36---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#11 src="alternating_list.c"; line=26 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(* (p@main ).n = t@main;p@main = * (p@main ).n;) location (1,21) absdatapost postloc: (1,11) UL> Running post on command: UL> Block(* (p@main ).n = t@main;p@main = * (p@main ).n;) SA> Post of SA is called! SA> TVLA: Create action SA> TVLA: Its title is p@main->n = NULL SA> TVLA: Create action SA> TVLA: Its title is p@main->n = t@main SA> TVLA: Create action SA> TVLA: Its title is p@main = p@main->n SA> Executing action p@main->n = NULL SA> Executing action p@main->n = t@main SA> Executing action p@main = p@main->n UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#11 src="alternating_list.c"; line=26 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_1, _0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_1:1/2} RGN> content(\x. (* (x)).h==2) = {_1:1/2, _0:1} RGN> content(\x. (* (x)).h==3) = {_1:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_1:1} RGN> ptsto_[t@main] = {_1:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_1:1, _0:1} RGN> r_[p@main,n] = {_1:1} RGN> r_[t@main,n] = {_1:1} RGN> r_[tmp@main,n] = {_1:1, _0:1} RGN> field_[n] = {_0->_1:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: NO SA> Cover -> NO found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#21 src="alternating_list.c"; line=36---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=41; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#21 src="alternating_list.c"; line=36---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#11 src="alternating_list.c"; line=26, data=Data(id=41; kind=Node; mark=Processed_Uncovered(time_stamp=37; region=[AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=42; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=43; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=42; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 36 Now processing tree node: Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=43; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#11 src="alternating_list.c"; line=26 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)--->Location: id=1#13 src="alternating_list.c"; line=39 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(true) location (1,11) absdatapost postloc: (1,13) UL> Running post on command: UL> Pred(true) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 275: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 3 Simplify Assuming: (NEQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 276: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 3 Simplify Assuming: (EQ (select (select v4 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 277: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 3 Simplify Assuming: (NEQ (select (select v4 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 278: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 3 Simplify Assuming: (EQ (select (select v3 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 279: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 3 Simplify Assuming: (NEQ (select (select v3 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 280: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 3 Simplify Assuming: (EQ (select (select v5 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 281: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 3 Simplify Assuming: (NEQ (select (select v5 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 282: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 2 Simplify Assuming: (EQ (select (select v2 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 283: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 2 Simplify Assuming: (NEQ (select (select v2 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 284: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 2 Simplify Assuming: (EQ (select (select v4 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 285: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 2 Simplify Assuming: (NEQ (select (select v4 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 286: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 2 Simplify Assuming: (EQ (select (select v3 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 287: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 2 Simplify Assuming: (NEQ (select (select v3 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 288: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 2 Simplify Assuming: (EQ (select (select v5 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 289: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 2 Simplify Assuming: (NEQ (select (select v5 0) v1) 2) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 290: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 1 Simplify Assuming: (EQ (select (select v2 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 291: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (p@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h != 1 Simplify Assuming: (NEQ (select (select v2 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 292: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h == 1 Simplify Assuming: (EQ (select (select v4 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 293: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (tmp@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (tmp@main ).h != 1 Simplify Assuming: (NEQ (select (select v4 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 294: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h == 1 Simplify Assuming: (EQ (select (select v3 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 295: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (a@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@main ).h != 1 Simplify Assuming: (NEQ (select (select v3 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 296: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h == 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h == 1 Simplify Assuming: (EQ (select (select v5 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 297: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: * (t@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (t@main ).h != 1 Simplify Assuming: (NEQ (select (select v5 0) v1) 1) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 298: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> No action has been scheduled for this post! UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#13 src="alternating_list.c"; line=39 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_1, _0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_1:1/2} RGN> content(\x. (* (x)).h==2) = {_1:1/2, _0:1} RGN> content(\x. (* (x)).h==3) = {_1:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_1:1} RGN> ptsto_[t@main] = {_1:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_1:1, _0:1} RGN> r_[p@main,n] = {_1:1} RGN> r_[t@main,n] = {_1:1} RGN> r_[tmp@main,n] = {_1:1, _0:1} RGN> field_[n] = {_0->_1:1} RGN> } RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==1) = {_0:1/2} RGN> content(\x. (* (x)).h==2) = {_0:1/2} RGN> content(\x. (* (x)).h==3) = {_0:1/2} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: NO SA> Cover -> NO found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=43; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#13 src="alternating_list.c"; line=39, data=Data(id=43; kind=Node; mark=Processed_Uncovered(time_stamp=38; region=[AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=44; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=42; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 37 Now processing tree node: Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=44; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#13 src="alternating_list.c"; line=39 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==1) = {_1:1/2} content(\x. (* (x)).h==2) = {_1:1/2, _0:1} content(\x. (* (x)).h==3) = {_1:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_1:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==1) = {_0:1/2} content(\x. (* (x)).h==2) = {_0:1/2} content(\x. (* (x)).h==3) = {_0:1/2} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;) location (1,13) absdatapost postloc: (1,24) UL> Running post on command: UL> Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 299: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 300: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 301: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 302: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 303: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 304: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 305: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 306: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 307: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==2 bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 308: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 309: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 310: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 311: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 312: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 313: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 314: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==1 bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 315: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 316: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 317: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 318: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 319: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 320: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Unhandled assignment (not tracked) flag@main=1 SA> Executing action force {p@main/x}(* (x)).h==3 SA> Executing action force !{p@main/x}(* (x)).h==1 SA> Executing action force !{p@main/x}(* (x)).h==2 SA> Executing action p@main = a@main UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#24 src="alternating_list.c"; line=44 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_1, _0} RGN> %p = { RGN> content(\x. (* (x)).h==2) = {_0:1} RGN> content(\x. (* (x)).h==3) = {_1:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[t@main] = {_1:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_1:1, _0:1} RGN> r_[p@main,n] = {_1:1, _0:1} RGN> r_[t@main,n] = {_1:1} RGN> r_[tmp@main,n] = {_1:1, _0:1} RGN> field_[n] = {_0->_1:1} RGN> } RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==3) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==2) = {_0:1} content(\x. (* (x)).h==3) = {_1:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1, _0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==2) = {_0:1} content(\x. (* (x)).h==3) = {_1:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1, _0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: NO SA> Cover -> NO In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==2) = {_0:1} content(\x. (* (x)).h==3) = {_1:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1, _0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: NO SA> Cover -> NO found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==2) = {_0:1} content(\x. (* (x)).h==3) = {_1:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1, _0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=44; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#13 src="alternating_list.c"; line=39---Block(* (p@main ).h = 3;p@main = a@main;flag@main = 1;)---> Location: id=1#24 src="alternating_list.c"; line=44, data=Data(id=44; kind=Node; mark=Processed_Uncovered(time_stamp=39; region=[AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==2) = {_0:1} content(\x. (* (x)).h==3) = {_1:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1, _0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=45; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=42; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:6 Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=46; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h != 3)---> Location: id=1#25 src="alternating_list.c"; line=45, data=Data(id=45; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#11 src="alternating_list.c"; line=26---Pred(true)---> Location: id=1#12 src="alternating_list.c"; line=27, data=Data(id=42; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#17 src="alternating_list.c"; line=35---Pred( t@main == 0)---> Location: id=1#18 src="alternating_list.c"; line=35, data=Data(id=39; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="alternating_list.c"; line=27---Pred( flag@main != 0)---> Location: id=1#14 src="alternating_list.c"; line=28, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#6 src="alternating_list.c"; line=23---Pred(a@main == 0)---> Location: id=1#7 src="alternating_list.c"; line=23, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 38 Now processing tree node: Node(edge=Location: id=1#24 src="alternating_list.c"; line=44---Pred( * (p@main ).h == 3)---> Location: id=1#26 src="alternating_list.c"; line=57, data=Data(id=46; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#24 src="alternating_list.c"; line=44 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==2) = {_0:1} content(\x. (* (x)).h==3) = {_1:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1, _0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] Location: id=1#24 src="alternating_list.c"; line=44---Pred(* (p@main ).h == 3)--->Location: id=1#26 src="alternating_list.c"; line=57 tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_1, _0} %p = { content(\x. (* (x)).h==2) = {_0:1} content(\x. (* (x)).h==3) = {_1:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[t@main] = {_1:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_1:1, _0:1} r_[p@main,n] = {_1:1, _0:1} r_[t@main,n] = {_1:1} r_[tmp@main,n] = {_1:1, _0:1} field_[n] = {_0->_1:1} } %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Pred(* (p@main ).h == 3) location (1,24) absdatapost postloc: (1,26) UL> Running post on command: UL> Pred(* (p@main ).h == 3) SA> Post of SA is called! bs_assert: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@main ).h == 3 Simplify Assuming: (EQ (select (select v2 0) v1) 3) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 321: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v2 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 322: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==3 bs_assert: And [* (tmp@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 323: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 324: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 325: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 326: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 327: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 3, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 3) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 328: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 329: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==2 bs_assert: And [* (tmp@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 330: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 331: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 332: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 333: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 334: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 2, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 2) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 335: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (p@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v2 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 336: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Incompatible content predicate: (* (p@main)).h==1 bs_assert: And [* (tmp@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 337: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (tmp@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v4 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 338: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 339: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (a@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v3 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 340: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (EQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 341: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf bs_assert: And [* (t@main ).h != 1, * (p@main ).h == 3] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 3] Simplify Assuming: (AND (EQ (select (select v2 0) v1) 3) (AND (NEQ (select (select v5 0) v1) 1) TRUE)) Done Assume simplify check contra querying exp: false convertToSimplifySyntax exp = false Simplify: FALSE Simplify : in isValid Simplify says: Simplify : in isValid Simplify says: > > > 342: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Don't have default action for atom predicate (* (p@main)).h==3 SA> Executing action {p@main/x}(* (x)).h==3 SA> Executing action ! {p@main/x}(* (x)).h==1 SA> Executing action ! {p@main/x}(* (x)).h==2 UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#26 src="alternating_list.c"; line=57 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Lattice = RGN> shape class of function (default) RGN> %n = {_0} RGN> %p = { RGN> content(\x. (* (x)).h==3) = {_0:1} RGN> ptsto_[a@main] = {_0:1} RGN> ptsto_[p@main] = {_0:1} RGN> ptsto_[tmp@main] = {_0:1} RGN> r_[a@main,n] = {_0:1} RGN> r_[p@main,n] = {_0:1} RGN> r_[tmp@main,n] = {_0:1} RGN> } RGN> Stack = RGN> RGN> Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] RGN> ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#30 src="alternating_list.c"; line=60 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: Bottom In Region.is_empty -- argument is: Bottom No error found at this node Let's test whether this node is covered findExactCov In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {_0} %p = { content(\x. (* (x)).h==3) = {_0:1} ptsto_[a@main] = {_0:1} ptsto_[p@main] = {_0:1} ptsto_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[p@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_alternating_list.c()] ] Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#26 src="alternating_list.c"; line=57 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of