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: list.c Initializing CIL Putting in initializer __BLAST_initialize_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; } 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_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) list.c:53: Warning: Return statement with a value in function returning void 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 : (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: > 3: 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: > 4: Invalid. false ********* function call: exitQuery : (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 == 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: > 7: 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: > 8: 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: > 9: Invalid. false Query : (* (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: > 10: Invalid. false Query : (* (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: > 11: 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: > 12: Invalid. false Finished converting function main Encountered function __BLAST_initialize_list.c Finished converting function __BLAST_initialize_list.c Start Building Callgraph-ocp Unknown called fun: malloc Unknown called fun: malloc Unknown called fun: malloc Filling SCC info SCC 1: main SCC 2: exit SCC 3: __BLAST_initialize_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: 9 Visited functions: 3 Visited existing functions: 3 Defined functions: main exit __BLAST_initialize_list.c Loop head : (0,1) Loop head : (1,36) Loop head : (1,31) Loop head : (1,29) Loop head : (1,12) Loop head : (1,10) Finished Building CFA Printing System Description Functions are: __BLAST_initialize_list.c exit main Function: __BLAST_initialize_list.c Formals: [] Labels: Location: Location: id=2#1 src="list.c"; line=0 Attributes: Outgoing edges: Location: id=2#1 src="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="list.c"; line=0---Block(Return(0);)---> Location: id=2#0 (Artificial) Function: exit Formals: [s@exit] Labels: _EXIT: Location: id=0#1 src="list.c"; line=12 Location: Location: id=0#1 src="list.c"; line=12 Attributes: Outgoing edges: Location: id=0#1 src="list.c"; line=12---Skip---> Location: id=0#1 src="list.c"; line=12 Ingoing edges: Location: id=0#1 src="list.c"; line=12---Skip---> Location: id=0#1 src="list.c"; line=12 Function: main Formals: [] Labels: ERROR: Location: id=1#36 src="list.c"; line=51 Location: Location: id=1#1 src="list.c"; line=0 Attributes: Outgoing edges: Location: id=1#1 src="list.c"; line=0---FunctionCall(__BLAST_initialize_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="list.c"; line=24 Ingoing edges: Location: id=1#1 src="list.c"; line=0---FunctionCall(__BLAST_initialize_list.c())---> Location: id=1#2 (Artificial) Location: Location: id=1#3 src="list.c"; line=24 Attributes: Outgoing edges: Location: id=1#3 src="list.c"; line=24---FunctionCall(tmp@main = malloc(512))---> Location: id=1#4 src="list.c"; line=24 Ingoing edges: Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="list.c"; line=24 Location: Location: id=1#4 src="list.c"; line=24 Attributes: Outgoing edges: Location: id=1#4 src="list.c"; line=24---Block(a@main = tmp@main;)---> Location: id=1#5 src="list.c"; line=25 Ingoing edges: Location: id=1#3 src="list.c"; line=24---FunctionCall(tmp@main = malloc(512))---> Location: id=1#4 src="list.c"; line=24 Location: Location: id=1#5 src="list.c"; line=25 Attributes: Outgoing edges: Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25 Location: id=1#5 src="list.c"; line=25---Pred(a@main != 0)---> Location: id=1#9 src="list.c"; line=27 Ingoing edges: Location: id=1#4 src="list.c"; line=24---Block(a@main = tmp@main;)---> Location: id=1#5 src="list.c"; line=25 Location: Location: id=1#6 src="list.c"; line=25 Attributes: Outgoing edges: Location: id=1#6 src="list.c"; line=25---FunctionCall(exit(1))---> Location: id=1#8 (Artificial) Ingoing edges: Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25 Location: Location: id=1#8 (Artificial) Attributes: Outgoing edges: Location: id=1#8 (Artificial)---Skip--->Location: id=1#9 src="list.c"; line=27 Ingoing edges: Location: id=1#6 src="list.c"; line=25---FunctionCall(exit(1))---> Location: id=1#8 (Artificial) Location: Location: id=1#9 src="list.c"; line=27 Attributes: Outgoing edges: Location: id=1#9 src="list.c"; line=27---Block(p@main = a@main;)---> Location: id=1#10 src="list.c"; line=28 Ingoing edges: Location: id=1#8 (Artificial)---Skip--->Location: id=1#9 src="list.c"; line=27 Location: id=1#5 src="list.c"; line=25---Pred(a@main != 0)---> Location: id=1#9 src="list.c"; line=27 Location: Location: id=1#10 src="list.c"; line=28 Attributes: Outgoing edges: Location: id=1#10 src="list.c"; line=28---Pred(true)---> Location: id=1#11 src="list.c"; line=29 Location: id=1#10 src="list.c"; line=28---Pred(true)---> Location: id=1#12 src="list.c"; line=35 Ingoing edges: Location: id=1#9 src="list.c"; line=27---Block(p@main = a@main;)---> Location: id=1#10 src="list.c"; line=28 Location: id=1#18 src="list.c"; line=32---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#10 src="list.c"; line=28 Location: Location: id=1#11 src="list.c"; line=29 Attributes: Outgoing edges: Location: id=1#11 src="list.c"; line=29---Block(* (p@main ).h = 1;)---> Location: id=1#13 src="list.c"; line=30 Ingoing edges: Location: id=1#10 src="list.c"; line=28---Pred(true)---> Location: id=1#11 src="list.c"; line=29 Location: Location: id=1#13 src="list.c"; line=30 Attributes: Outgoing edges: Location: id=1#13 src="list.c"; line=30---FunctionCall(t@main = malloc(512))---> Location: id=1#14 src="list.c"; line=31 Ingoing edges: Location: id=1#11 src="list.c"; line=29---Block(* (p@main ).h = 1;)---> Location: id=1#13 src="list.c"; line=30 Location: Location: id=1#14 src="list.c"; line=31 Attributes: Outgoing edges: Location: id=1#14 src="list.c"; line=31---Pred(t@main == 0)---> Location: id=1#15 src="list.c"; line=31 Location: id=1#14 src="list.c"; line=31---Pred(t@main != 0)---> Location: id=1#18 src="list.c"; line=32 Ingoing edges: Location: id=1#13 src="list.c"; line=30---FunctionCall(t@main = malloc(512))---> Location: id=1#14 src="list.c"; line=31 Location: Location: id=1#15 src="list.c"; line=31 Attributes: Outgoing edges: Location: id=1#15 src="list.c"; line=31---FunctionCall(exit(1))---> Location: id=1#17 (Artificial) Ingoing edges: Location: id=1#14 src="list.c"; line=31---Pred(t@main == 0)---> Location: id=1#15 src="list.c"; line=31 Location: Location: id=1#17 (Artificial) Attributes: Outgoing edges: Location: id=1#17 (Artificial)---Skip--->Location: id=1#18 src="list.c"; line=32 Ingoing edges: Location: id=1#15 src="list.c"; line=31---FunctionCall(exit(1))---> Location: id=1#17 (Artificial) Location: Location: id=1#18 src="list.c"; line=32 Attributes: Outgoing edges: Location: id=1#18 src="list.c"; line=32---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#10 src="list.c"; line=28 Ingoing edges: Location: id=1#17 (Artificial)---Skip--->Location: id=1#18 src="list.c"; line=32 Location: id=1#14 src="list.c"; line=31---Pred(t@main != 0)---> Location: id=1#18 src="list.c"; line=32 Location: Location: id=1#12 src="list.c"; line=35 Attributes: Outgoing edges: Location: id=1#12 src="list.c"; line=35---Pred(true)---> Location: id=1#20 src="list.c"; line=36 Location: id=1#12 src="list.c"; line=35---Pred(true)---> Location: id=1#21 src="list.c"; line=42 Ingoing edges: Location: id=1#10 src="list.c"; line=28---Pred(true)---> Location: id=1#12 src="list.c"; line=35 Location: id=1#27 src="list.c"; line=39---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#12 src="list.c"; line=35 Location: Location: id=1#20 src="list.c"; line=36 Attributes: Outgoing edges: Location: id=1#20 src="list.c"; line=36---Block(* (p@main ).h = 2;)---> Location: id=1#22 src="list.c"; line=37 Ingoing edges: Location: id=1#12 src="list.c"; line=35---Pred(true)---> Location: id=1#20 src="list.c"; line=36 Location: Location: id=1#22 src="list.c"; line=37 Attributes: Outgoing edges: Location: id=1#22 src="list.c"; line=37---FunctionCall(t@main = malloc(512))---> Location: id=1#23 src="list.c"; line=38 Ingoing edges: Location: id=1#20 src="list.c"; line=36---Block(* (p@main ).h = 2;)---> Location: id=1#22 src="list.c"; line=37 Location: Location: id=1#23 src="list.c"; line=38 Attributes: Outgoing edges: Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38 Location: id=1#23 src="list.c"; line=38---Pred(t@main != 0)---> Location: id=1#27 src="list.c"; line=39 Ingoing edges: Location: id=1#22 src="list.c"; line=37---FunctionCall(t@main = malloc(512))---> Location: id=1#23 src="list.c"; line=38 Location: Location: id=1#24 src="list.c"; line=38 Attributes: Outgoing edges: Location: id=1#24 src="list.c"; line=38---FunctionCall(exit(1))---> Location: id=1#26 (Artificial) Ingoing edges: Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38 Location: Location: id=1#26 (Artificial) Attributes: Outgoing edges: Location: id=1#26 (Artificial)---Skip--->Location: id=1#27 src="list.c"; line=39 Ingoing edges: Location: id=1#24 src="list.c"; line=38---FunctionCall(exit(1))---> Location: id=1#26 (Artificial) Location: Location: id=1#27 src="list.c"; line=39 Attributes: Outgoing edges: Location: id=1#27 src="list.c"; line=39---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#12 src="list.c"; line=35 Ingoing edges: Location: id=1#26 (Artificial)---Skip--->Location: id=1#27 src="list.c"; line=39 Location: id=1#23 src="list.c"; line=38---Pred(t@main != 0)---> Location: id=1#27 src="list.c"; line=39 Location: Location: id=1#21 src="list.c"; line=42 Attributes: Outgoing edges: Location: id=1#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46 Ingoing edges: Location: id=1#12 src="list.c"; line=35---Pred(true)---> Location: id=1#21 src="list.c"; line=42 Location: Location: id=1#29 src="list.c"; line=46 Attributes: Outgoing edges: Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47 Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48 Ingoing edges: Location: id=1#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46 Location: id=1#30 src="list.c"; line=47---Block(p@main = * (p@main ).n;)---> Location: id=1#29 src="list.c"; line=46 Location: Location: id=1#30 src="list.c"; line=47 Attributes: Outgoing edges: Location: id=1#30 src="list.c"; line=47---Block(p@main = * (p@main ).n;)---> Location: id=1#29 src="list.c"; line=46 Ingoing edges: Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47 Location: Location: id=1#31 src="list.c"; line=48 Attributes: Outgoing edges: Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49 Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50 Ingoing edges: Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48 Location: id=1#33 src="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48 Location: Location: id=1#33 src="list.c"; line=49 Attributes: Outgoing edges: Location: id=1#33 src="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48 Ingoing edges: Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49 Location: Location: id=1#34 src="list.c"; line=50 Attributes: Outgoing edges: Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51 Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h == 3)---> Location: id=1#37 src="list.c"; line=20 Ingoing edges: Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50 Location: Location: id=1#36 src="list.c"; line=51 Attributes: Outgoing edges: Location: id=1#36 src="list.c"; line=51---Skip---> Location: id=1#36 src="list.c"; line=51 Ingoing edges: Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51 Location: id=1#36 src="list.c"; line=51---Skip---> Location: id=1#36 src="list.c"; line=51 Location: Location: id=1#37 src="list.c"; line=20 Attributes: Outgoing edges: Location: id=1#37 src="list.c"; line=20---Block(Return(0);)---> Location: id=1#0 (Artificial) Ingoing edges: Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h == 3)---> Location: id=1#37 src="list.c"; line=20 Location: Location: id=1#0 (Artificial) Attributes: Outgoing edges: Ingoing edges: Location: id=1#37 src="list.c"; line=20---Block(Return(0);)---> Location: id=1#0 (Artificial) Global variables are: Lvalues are: Lval (* (p@main)).n Lval a@main Lval __BLAST_initialize_list.c Lval * (p@main) Lval (* (p@main)).h Lval tmp@main Lval p@main Lval malloc Lval __BLAST_NONDET@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_list.c t@main tmp@main __bddptsto_mem0 p@main __bddptsto_mem1 __bddptsto_mem2 exit main s@exit bdd_pts_to: Starting iteration. In assign_alloc ptarget is t@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 t@main In assign_alloc ptarget is tmp@main In assign_alloc ptarget is t@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 t@main In assign_alloc ptarget is tmp@main In assign_alloc ptarget is t@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 t@main In assign_alloc ptarget is tmp@main Number of edges (flow insensitive) 16.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_list.c Direct Wr:3:__BLAST_initialize_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 exit effects Call malloc effects Call malloc effects Call __BLAST_initialize_list.c effects Direct Wr:1: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 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 (* (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_list.c and tmp@main After peeling: __BLAST_initialize_list.c 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 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 (* (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_list.c and a@main After peeling: __BLAST_initialize_list.c 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 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 (* (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_list.c and p@main After peeling: __BLAST_initialize_list.c 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 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 (* (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_list.c and (* (p@main)).h After peeling: __BLAST_initialize_list.c and (* (p@main)).h The types are different. Hence not aliased. QueryAlias __BLAST_initialize_list.c (* (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: p@main get_lval_aliases_iter: p@main get_lval_aliases_iter: (* (p@main)).h 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 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 (* (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_list.c and t@main After peeling: __BLAST_initialize_list.c 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 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 (* (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_list.c and (* (p@main)).n After peeling: __BLAST_initialize_list.c and (* (p@main)).n The types are different. Hence not aliased. QueryAlias __BLAST_initialize_list.c (* (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: t@main get_lval_aliases_iter: (* (p@main)).n get_lval_aliases_iter: p@main COMP MOD iter1 done COMP MOD iter2 done Done computing mods Write mods to : list.mods.gl Done writing to :list.mods.gl Write mods to : list.mods.fl Done writing to :list.mods.fl Write mods to : list.mods.mmb Done writing to :list.mods.mmb Write mods to : list.mods.ceef Done writing to :list.mods.ceef Done writing mods In add_symbolic_hooks [add_symbolic_hooks] Processing function: __BLAST_initialize_list.c [add_symbolic_hooks] Processing function: exit Done post-alias-analysis back from post_alias_analysis Unknown called fun: malloc Unknown called fun: malloc 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: 9 Visited functions: 3 Visited existing functions: 3 Defined functions: main exit __BLAST_initialize_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 :exit(,1) In Deconstruct_fc :malloc(,512) In Deconstruct_fc :malloc(,512) 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_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_[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, 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_[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, 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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] error region: [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#1 src="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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="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="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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) cfLMC enters: __BLAST_initialize_list.c In post -- arguments are: [AtomicRegion: Location: id=1#1 src="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] Location: id=1#1 src="list.c"; line=0---FunctionCall(__BLAST_initialize_list.c())---> Location: id=1#2 (Artificial) tos_fname: __BLAST_DUMMY_FUNCTION, tos_2_fname: __BLAST_DUMMY_FUNCTION In Deconstruct_fc :__BLAST_initialize_list.c() In abstract_data_post GRAF_SAIDI_POST -- arguments are: AbstrDatRgn: Predicates: [...] Lattice: Top FunctionCall(__BLAST_initialize_list.c()) location (1,1) absdatapost postloc: (2,2) UL> Running post on command: UL> FunctionCall(__BLAST_initialize_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_list.c() In Deconstruct_fc :__BLAST_initialize_list.c() SA> Unhandled statement __BLAST_initialize_list.c() UL> Post returning predicates: UL> And [] Writing back post region New entry point for __BLAST_initialize_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="list.c"; line=0---FunctionCall(__BLAST_initialize_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_list.c()] ] Stack: [Location: id=1#1 src="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_list.c()] ] RGN> RGN> Stack: RGN> [Location: id=1#1 src="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_list.c()] ] Stack: [Location: id=1#1 src="list.c"; line=0]] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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_list.c()] ] Stack: [Location: id=1#1 src="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="list.c"; line=0---FunctionCall(__BLAST_initialize_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_list.c()] ] Stack: [Location: id=1#1 src="list.c"; line=0]] ))) Updating the node's marking This node now looks like: Node(edge=Location: id=1#1 src="list.c"; line=0---FunctionCall(__BLAST_initialize_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_list.c()] ] Stack: [Location: id=1#1 src="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_list.c)---> Location: id=2#1 src="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_list.c)---> Location: id=2#1 src="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_list.c()] ] Stack: [Location: id=1#1 src="list.c"; line=0]] Location: id=2#2 (Artificial)---SymHook(__BLAST_initialize_list.c)---> Location: id=2#1 src="list.c"; line=0 tos_fname: __BLAST_initialize_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_list.c()] ] SymHook(__BLAST_initialize_list.c) location (2,2) absdatapost postloc: (2,1) UL> Running post on command: UL> SymHook(__BLAST_initialize_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="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_list.c()] ] RGN> RGN> Stack: RGN> [Location: id=1#1 src="list.c"; line=0]] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=2#1 src="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="list.c"; line=0]] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="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_list.c)---> Location: id=2#1 src="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_list.c)---> Location: id=2#1 src="list.c"; line=0, data=Data(id=3; kind=Node; mark=Processed_Uncovered(time_stamp=2; region=[AtomicRegion: Location: id=2#1 src="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="list.c"; line=0]] ))) It's a new exit point for __BLAST_initialize_list.c ! |entries| = 1 New summary edges to exit node. New summary edge! Node(edge=Location: id=1#1 src="list.c"; line=0---FunctionCall(__BLAST_initialize_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_list.c()] ] Stack: [Location: id=1#1 src="list.c"; line=0]] ))) --> Node(edge=Location: id=2#1 src="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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="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_list.c()] ] Stack: [Location: id=1#1 src="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_list.c()] ] Stack: [Location: id=1#1 src="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="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="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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="list.c"; line=0]] In Deconstruct_fc :__BLAST_initialize_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_list.c()] ] 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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_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="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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="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="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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: [Location: id=1#1 src="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_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="list.c"; line=24, 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="list.c"; line=24, 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_list.c()] ] Stack: []] Location: id=1#2 (Artificial)---Skip--->Location: id=1#3 src="list.c"; line=24 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_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="list.c"; line=24 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#3 src="list.c"; line=24 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=24 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_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="list.c"; line=24, 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="list.c"; line=24, data=Data(id=6; kind=Node; mark=Processed_Uncovered(time_stamp=5; region=[AtomicRegion: Location: id=1#3 src="list.c"; line=24 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#3 src="list.c"; line=24---FunctionCall(tmp@main = malloc(512))--->Location: id=1#4 src="list.c"; line=24, 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="list.c"; line=24---FunctionCall(tmp@main = malloc(512))--->Location: id=1#4 src="list.c"; line=24, data=Data(id=7; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#3 src="list.c"; line=24 AbstrDatRgn: Predicates: [...] Lattice: Lattice = shape class of function (default) %n = {} %p = { } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: []] Location: id=1#3 src="list.c"; line=24---FunctionCall(tmp@main = malloc(512))---> Location: id=1#4 src="list.c"; line=24 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_list.c()] ] FunctionCall(tmp@main = malloc(512)) location (1,3) absdatapost postloc: (1,4) 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#4 src="list.c"; line=24 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#4 src="list.c"; line=24 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=24 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_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="list.c"; line=24---FunctionCall(tmp@main = malloc(512))--->Location: id=1#4 src="list.c"; line=24, 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="list.c"; line=24---FunctionCall(tmp@main = malloc(512))--->Location: id=1#4 src="list.c"; line=24, data=Data(id=7; kind=Node; mark=Processed_Uncovered(time_stamp=6; region=[AtomicRegion: Location: id=1#4 src="list.c"; line=24 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#4 src="list.c"; line=24---Block(a@main = tmp@main;)---> Location: id=1#5 src="list.c"; line=25, 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="list.c"; line=24---Block(a@main = tmp@main;)---> Location: id=1#5 src="list.c"; line=25, data=Data(id=8; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#4 src="list.c"; line=24 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_list.c()] ] Stack: []] Location: id=1#4 src="list.c"; line=24---Block(a@main = tmp@main;)---> Location: id=1#5 src="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_[tmp@main] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Block(a@main = tmp@main;) location (1,4) absdatapost postloc: (1,5) 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#5 src="list.c"; line=25 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#5 src="list.c"; line=25 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=25 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_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="list.c"; line=24---Block(a@main = tmp@main;)---> Location: id=1#5 src="list.c"; line=25, 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="list.c"; line=24---Block(a@main = tmp@main;)---> Location: id=1#5 src="list.c"; line=25, data=Data(id=8; kind=Node; mark=Processed_Uncovered(time_stamp=7; region=[AtomicRegion: Location: id=1#5 src="list.c"; line=25 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:1 Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:2 Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main != 0)---> Location: id=1#9 src="list.c"; line=27, data=Data(id=10; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, 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="list.c"; line=25---Pred(a@main != 0)---> Location: id=1#9 src="list.c"; line=27, data=Data(id=10; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#5 src="list.c"; line=25 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_list.c()] ] Stack: []] Location: id=1#5 src="list.c"; line=25---Pred(a@main != 0)--->Location: id=1#9 src="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 = {} %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_list.c()] ] Pred(a@main != 0) location (1,5) absdatapost postloc: (1,9) UL> Running post on command: UL> Pred(a@main != 0) SA> Post of SA is called! 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 v2 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: > > 13: 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 v2 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: > > > 14: 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 v2 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: > > > 15: 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 v2 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: > > > 16: 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 v2 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 [* (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 v2 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 [* (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 v2 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: > > > 19: 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 v2 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: > > > 20: 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 v2 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: > > > 21: 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 v2 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: > > > 22: 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 v2 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: > > > 23: 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 v2 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: > > > 24: 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 v2 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 [* (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 v2 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 [* (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 v2 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: > > > 27: 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 v2 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: > > > 28: 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 v2 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: > > > 29: 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 v2 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: > > > 30: 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 v2 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: > > > 31: 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 v2 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: > > > 32: 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 v2 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 [* (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 v2 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 [* (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 v2 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: > > > 35: 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 v2 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: > > > 36: 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#9 src="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_[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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#9 src="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_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#9 src="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_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_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="list.c"; line=25---Pred(a@main != 0)---> Location: id=1#9 src="list.c"; line=27, data=Data(id=10; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main != 0)---> Location: id=1#9 src="list.c"; line=27, data=Data(id=10; kind=Node; mark=Processed_Uncovered(time_stamp=8; region=[AtomicRegion: Location: id=1#9 src="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_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:2 Node(edge=Location: id=1#9 src="list.c"; line=27---Block(p@main = a@main;)---> Location: id=1#10 src="list.c"; line=28, data=Data(id=11; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#9 src="list.c"; line=27---Block(p@main = a@main;)---> Location: id=1#10 src="list.c"; line=28, data=Data(id=11; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#9 src="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_[tmp@main] = {_0:1} r_[a@main,n] = {_0:1} r_[tmp@main,n] = {_0:1} } Stack = Callstack: [* (sizeof(<0>)) <(default)> = __BLAST_initialize_list.c()] ] Stack: []] Location: id=1#9 src="list.c"; line=27---Block(p@main = a@main;)--->Location: id=1#10 src="list.c"; line=28 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_list.c()] ] Block(p@main = a@main;) location (1,9) absdatapost postloc: (1,10) 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#10 src="list.c"; line=28 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#10 src="list.c"; line=28 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=28 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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#9 src="list.c"; line=27---Block(p@main = a@main;)---> Location: id=1#10 src="list.c"; line=28, data=Data(id=11; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#9 src="list.c"; line=27---Block(p@main = a@main;)---> Location: id=1#10 src="list.c"; line=28, data=Data(id=11; kind=Node; mark=Processed_Uncovered(time_stamp=9; region=[AtomicRegion: Location: id=1#10 src="list.c"; line=28 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:2 Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#12 src="list.c"; line=35, data=Data(id=13; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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="list.c"; line=28---Pred(true)--->Location: id=1#12 src="list.c"; line=35, data=Data(id=13; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#10 src="list.c"; line=28 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_list.c()] ] Stack: []] Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Pred(true) location (1,10) absdatapost postloc: (1,12) UL> Running post on command: UL> Pred(true) SA> Post of SA is called! bs_assert: * (a@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@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: > > > 37: 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 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: > > > 38: 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 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: > > > 39: 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 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: > > > 40: 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: (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: * (p@main ).h != 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@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: * (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: > > > 43: 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: > > > 44: 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 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: > > > 45: 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 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: > > > 46: 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 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: > > > 47: 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 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: > > > 48: 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 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: * (p@main ).h != 2 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@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: * (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: > > > 51: 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: > > > 52: 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 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: > > > 53: 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 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: > > > 54: 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 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: > > > 55: 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 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: > > > 56: 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 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: * (p@main ).h != 1 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@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: * (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: > > > 59: 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: > > > 60: 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="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==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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=35 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_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="list.c"; line=28---Pred(true)--->Location: id=1#12 src="list.c"; line=35, data=Data(id=13; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#12 src="list.c"; line=35, data=Data(id=13; kind=Node; mark=Processed_Uncovered(time_stamp=10; region=[AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=15; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#12 src="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=15; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Stack: []] Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Pred(true) location (1,12) absdatapost postloc: (1,21) UL> Running post on command: UL> Pred(true) SA> Post of SA is called! bs_assert: * (a@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@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: > > > 61: 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 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: > > > 62: 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 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: > > > 63: 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 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: > > > 64: 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: (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: > > > 65: 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 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: > > > 66: 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: > > > 67: 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: > > > 68: 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 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: > > > 69: 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 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: > > > 70: 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 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: > > > 71: 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 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: > > > 72: 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 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: > > > 73: 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 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: > > > 74: 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: > > > 75: 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: > > > 76: 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 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: > > > 77: 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 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: > > > 78: 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 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: > > > 79: 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 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: > > > 80: 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 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: > > > 81: 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 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: > > > 82: 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: > > > 83: 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: > > > 84: 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#21 src="list.c"; line=42 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=42 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_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="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=15; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=15; kind=Node; mark=Processed_Uncovered(time_stamp=11; region=[AtomicRegion: Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=16; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=16; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Stack: []] Location: id=1#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)--->Location: id=1#29 src="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: 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_list.c()] ] Block(* (p@main ).h = 3;p@main = a@main;) location (1,21) absdatapost postloc: (1,29) UL> Running post on command: UL> Block(* (p@main ).h = 3;p@main = a@main;) SA> Post of SA is called! 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 v4 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: > > > 85: 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 v4 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: > > > 86: 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 v4 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: > > > 87: 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 v4 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: > > > 88: 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: (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: > > > 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 v4 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: > > > 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 [* (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 v4 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: > > > 91: 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 v4 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: > > > 92: 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 v4 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: > > > 93: 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 v4 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: > > > 94: 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 v4 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: > > > 95: 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 v4 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: > > > 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 v4 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: > > > 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 [* (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 v4 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: > > > 98: 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 v4 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: > > > 99: 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 v4 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: > > > 100: 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 v4 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: > > > 101: 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 v4 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: > > > 102: 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 v4 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: > > > 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 v4 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: > > > 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 [* (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 v4 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: > > > 105: 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 v4 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: > > > 106: 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: > > > 107: 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: > > > 108: 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: > > > 109: 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: > > > 110: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf 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#29 src="list.c"; line=46 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=46 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_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="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=16; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=16; kind=Node; mark=Processed_Uncovered(time_stamp=12; region=[AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=18; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=18; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48 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_list.c()] ] 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! bs_assert: And [* (a@main ).h == 3, * (p@main ).h != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 113: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 114: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 115: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 117: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 118: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 119: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 121: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 122: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 123: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 125: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 126: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 127: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 129: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 130: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 131: 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 [* (t@main ).h == 1, * (p@main ).h != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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!=1 SA> TVLA: Create action SA> TVLA: Its title is ! {p@main/x}(* (x)).h==1 SA> Executing action ! {p@main/x}(* (x)).h==1 UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#31 src="list.c"; line=48 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=48 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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=18; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=18; kind=Node; mark=Processed_Uncovered(time_stamp=13; region=[AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:6 Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50, data=Data(id=20; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50, data=Data(id=20; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="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: 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_list.c()] ] Pred(* (p@main ).h != 2) location (1,31) absdatapost postloc: (1,34) UL> Running post on command: UL> Pred(* (p@main ).h != 2) SA> Post of SA is called! 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 (NEQ (select (select v4 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: > > > 134: 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 (NEQ (select (select v4 0) v1) 2) (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: 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 (NEQ (select (select v4 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: > > > 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 137: 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 138: 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 141: 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 (NEQ (select (select v4 0) v1) 2) (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: 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 (NEQ (select (select v4 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: > > > 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 144: 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 (NEQ (select (select v4 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: > > > 145: 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 (NEQ (select (select v4 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: > > > 146: 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 [* (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 (NEQ (select (select v4 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: > > > 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 148: 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 (NEQ (select (select v4 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: > > > 149: 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 (NEQ (select (select v4 0) v1) 2) (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: > > > 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 151: 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 (NEQ (select (select v4 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: > > > 152: 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 (NEQ (select (select v4 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: > > > 153: 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 (NEQ (select (select v4 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: > > > 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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: > > > 155: 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 (NEQ (select (select v4 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: > > > 156: 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!=2 SA> TVLA: Create action SA> TVLA: Its title is ! {p@main/x}(* (x)).h==2 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#34 src="list.c"; line=50 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=50 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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50, data=Data(id=20; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50, data=Data(id=20; kind=Node; mark=Processed_Uncovered(time_stamp=14; region=[AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:6 Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51, data=Data(id=21; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:7 Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h == 3)---> Location: id=1#37 src="list.c"; line=20, data=Data(id=22; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51, data=Data(id=21; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) 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#34 src="list.c"; line=50---Pred(* (p@main ).h == 3)---> Location: id=1#37 src="list.c"; line=20, data=Data(id=22; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h == 3)---> Location: id=1#37 src="list.c"; line=20 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_list.c()] ] Pred(* (p@main ).h == 3) location (1,34) absdatapost postloc: (1,37) UL> Running post on command: UL> Pred(* (p@main ).h == 3) SA> Post of SA is called! 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 v4 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: > > > 157: 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 v4 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: > > > 158: 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 v4 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 [* (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 v4 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: * (p@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (p@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: > > > 161: 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 v4 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: > > > 162: 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 [* (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 v4 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: > > > 163: 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 v4 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: > > > 164: 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 v4 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: > > > 165: 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 v4 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: > > > 166: 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 v4 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 [* (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 v4 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 [* (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 v4 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: > > > 169: 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 [* (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 v4 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: > > > 170: 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 v4 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: > > > 171: 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 v4 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: > > > 172: 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 v4 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: > > > 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 (EQ (select (select v4 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: > > > 174: 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 v4 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: > > > 175: 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 v4 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: > > > 176: 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 [* (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 v4 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 (EQ (select (select v4 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> TVLA: Create action SA> TVLA: Its title is {p@main/x}(* (x)).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#37 src="list.c"; line=20 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#37 src="list.c"; line=20 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#37 src="list.c"; line=20 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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h == 3)---> Location: id=1#37 src="list.c"; line=20, data=Data(id=22; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h == 3)---> Location: id=1#37 src="list.c"; line=20, data=Data(id=22; kind=Node; mark=Processed_Uncovered(time_stamp=15; region=[AtomicRegion: Location: id=1#37 src="list.c"; line=20 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_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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) --> Node(edge=Location: id=1#37 src="list.c"; line=20---Block(Return(0);)---> Location: id=1#0 (Artificial), data=Data(id=23; kind=Exit; mark=Processed_Uncovered(time_stamp=16; region=[AtomicRegion: Location: id=1#37 src="list.c"; line=20 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_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 16 Now processing tree node: Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51, data=Data(id=21; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="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: 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_list.c()] ] Pred(* (p@main ).h != 3) location (1,34) absdatapost postloc: (1,36) UL> Running post on command: UL> Pred(* (p@main ).h != 3) SA> Post of SA is called! 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 v4 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: > > > 179: 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 v4 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: > > > 180: 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 v4 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: > > > 181: 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 v4 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: > > > 182: 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 (NEQ (select (select v4 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: > > > 183: 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 [* (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 v4 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: > > > 184: 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 v4 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: > > > 185: 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 v4 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: > > > 186: 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 v4 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: > > > 187: 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 v4 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: > > > 188: 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 v4 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: > > > 189: 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 v4 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: > > > 190: 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 v4 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: > > > 191: 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 v4 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: > > > 192: 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 v4 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: > > > 193: 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 v4 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: > > > 194: 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 v4 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: > > > 195: 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 v4 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: > > > 196: 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 v4 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: > > > 197: 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 v4 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: > > > 198: 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 v4 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: > > > 199: 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 v4 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: > > > 200: 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 v4 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: > > > 201: 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#36 src="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="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#36 src="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#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51, data=Data(id=21; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51, data=Data(id=21; kind=Node; mark=Processed_Uncovered(time_stamp=17; region=[AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:6 Node(edge=Location: id=1#36 src="list.c"; line=51---Skip--->Location: id=1#36 src="list.c"; line=51, data=Data(id=24; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#36 src="list.c"; line=51---Skip--->Location: id=1#36 src="list.c"; line=51, data=Data(id=24; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#36 src="list.c"; line=51---Skip--->Location: id=1#36 src="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 Skip location (1,36) absdatapost postloc: (1,36) 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#36 src="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="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: Everystack ] Error region at this node: [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] BY: Node(edge=Location: id=1#34 src="list.c"; line=50---Pred(* (p@main ).h != 3)---> Location: id=1#36 src="list.c"; line=51, data=Data(id=21; kind=Node; mark=Processed_Uncovered(time_stamp=17; region=[AtomicRegion: Location: id=1#36 src="list.c"; line=51 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) NEW SUMMARIES 1 vs. 0 **************************************************************************** Next iteration of model-check's big while-loop 18 Now processing tree node: Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49 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_list.c()] ] Pred(* (p@main ).h == 2) location (1,31) absdatapost postloc: (1,33) UL> Running post on command: UL> Pred(* (p@main ).h == 2) SA> Post of SA is called! 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 v4 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: > > > 202: 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 v4 0) v1) 2) (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: > > > 203: 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 v4 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: > > > 204: 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 v4 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: > > > 205: 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 == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v4 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: > > > 206: 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 [* (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 v4 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: > > > 207: 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 v4 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: > > > 208: 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 v4 0) v1) 2) (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: > > > 209: 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 v4 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: > > > 210: 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 v4 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: > > > 211: 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 v4 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: > > > 212: 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 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: > > > 213: 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 v4 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: > > > 214: 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 [* (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 v4 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: > > > 215: 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 v4 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: > > > 216: 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 v4 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: > > > 217: 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 v4 0) v1) 2) (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: > > > 218: 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 v4 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: > > > 219: 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 v4 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: > > > 220: 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 v4 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: > > > 221: 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 [* (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 v4 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: > > > 222: 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 v4 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: > > > 223: 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==2 SA> TVLA: Create action SA> TVLA: Its title is {p@main/x}(* (x)).h==2 SA> Executing action {p@main/x}(* (x)).h==2 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="list.c"; line=49 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=49 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="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Processed_Uncovered(time_stamp=19; region=[AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#33 src="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=25; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#33 src="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=25; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#33 src="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48 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,33) absdatapost postloc: (1,31) 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#31 src="list.c"; line=48 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=48 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#31 src="list.c"; line=48 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> NO found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=25; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#33 src="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=25; kind=Node; mark=Processed_Uncovered(time_stamp=20; region=[AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=26; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:6 Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50, data=Data(id=27; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=26; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50, data=Data(id=27; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="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: 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_list.c()] ] Pred(* (p@main ).h != 2) location (1,31) absdatapost postloc: (1,34) UL> Running post on command: UL> Pred(* (p@main ).h != 2) SA> Post of SA is called! 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 (NEQ (select (select v4 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: > > > 224: 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 (NEQ (select (select v4 0) v1) 2) (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: > > > 225: 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 (NEQ (select (select v4 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: > > > 226: 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 (NEQ (select (select v4 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: > > > 227: 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 != 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h != 2] Simplify Assuming: (AND (NEQ (select (select v4 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 [* (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 (NEQ (select (select v4 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 [* (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 (NEQ (select (select v4 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: > > > 230: 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 (NEQ (select (select v4 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: > > > 231: 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 (NEQ (select (select v4 0) v1) 2) (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: > > > 232: 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 (NEQ (select (select v4 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: > > > 233: 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 (NEQ (select (select v4 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: > > > 234: 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 (NEQ (select (select v4 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: > > > 235: 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 (NEQ (select (select v4 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: 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 [* (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 (NEQ (select (select v4 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: > > > 237: 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 (NEQ (select (select v4 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: > > > 238: 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 (NEQ (select (select v4 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: > > > 239: 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 (NEQ (select (select v4 0) v1) 2) (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: > > > 240: 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 (NEQ (select (select v4 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: > > > 241: 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 (NEQ (select (select v4 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: > > > 242: 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 (NEQ (select (select v4 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 [* (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 (NEQ (select (select v4 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 [* (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 (NEQ (select (select v4 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: > > > 245: 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 (NEQ (select (select v4 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: > > > 246: 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!=2 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#34 src="list.c"; line=50 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=50 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_list.c()] ] Stack: []] BY: Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h != 2)---> Location: id=1#34 src="list.c"; line=50, data=Data(id=20; kind=Node; mark=Processed_Uncovered(time_stamp=14; region=[AtomicRegion: Location: id=1#34 src="list.c"; line=50 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_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="list.c"; line=0 AbstrDatRgn: Predicates: [...] Lattice: Top Stack: []] ))) --> Node(edge=Location: id=1#37 src="list.c"; line=20---Block(Return(0);)---> Location: id=1#0 (Artificial), data=Data(id=23; kind=Exit; mark=Processed_Uncovered(time_stamp=16; region=[AtomicRegion: Location: id=1#37 src="list.c"; line=20 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_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#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=26; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49 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_list.c()] ] Pred(* (p@main ).h == 2) location (1,31) absdatapost postloc: (1,33) UL> Running post on command: UL> Pred(* (p@main ).h == 2) SA> Post of SA is called! 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 v4 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: > > > 247: 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 v4 0) v1) 2) (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: > > > 248: 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 v4 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: > > > 249: 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 v4 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: > > > 250: 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 == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v4 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: > > > 251: 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 [* (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 v4 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: > > > 252: 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 v4 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: > > > 253: 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 v4 0) v1) 2) (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: > > > 254: 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 v4 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: > > > 255: 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 v4 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: > > > 256: 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 v4 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: > > > 257: 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 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: > > > 258: 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 v4 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: > > > 259: 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 [* (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 v4 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: > > > 260: 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 v4 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: > > > 261: 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 v4 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: > > > 262: 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 v4 0) v1) 2) (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: > > > 263: 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 v4 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: > > > 264: 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 v4 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: > > > 265: 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 v4 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: > > > 266: 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 [* (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 v4 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: > > > 267: 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 v4 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: > > > 268: 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==2 SA> Executing action {p@main/x}(* (x)).h==2 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="list.c"; line=49 RGN> AbstrDatRgn: RGN> Predicates: [...] RGN> Lattice: RGN> Bottom RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#33 src="list.c"; line=49 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] BY: Node(edge=Location: id=1#31 src="list.c"; line=48---Pred(* (p@main ).h == 2)---> Location: id=1#33 src="list.c"; line=49, data=Data(id=19; kind=Node; mark=Processed_Uncovered(time_stamp=19; region=[AtomicRegion: Location: id=1#33 src="list.c"; line=49 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#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="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: 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_list.c()] ] 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! bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 269: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 270: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 271: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 272: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 273: 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 [* (t@main ).h == 3, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 274: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 275: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 276: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 277: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 278: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 279: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 280: 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 [* (t@main ).h == 2, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 281: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 282: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 283: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 284: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 285: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 286: 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 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: > > > 287: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 288: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==1 bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 289: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 290: 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==1 SA> TVLA: Create action SA> TVLA: Its title is {p@main/x}(* (x)).h==1 SA> Executing action {p@main/x}(* (x)).h==1 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="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#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#30 src="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#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Processed_Uncovered(time_stamp=23; region=[AtomicRegion: Location: id=1#30 src="list.c"; line=47 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="list.c"; line=47---Block(p@main = * (p@main ).n;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=28; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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="list.c"; line=47---Block(p@main = * (p@main ).n;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=28; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] Location: id=1#30 src="list.c"; line=47---Block(p@main = * (p@main ).n;)---> Location: id=1#29 src="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 Block(p@main = * (p@main ).n;) location (1,30) absdatapost postloc: (1,29) 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#29 src="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#29 src="list.c"; line=46 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#29 src="list.c"; line=46 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#29 src="list.c"; line=46 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> NO found no exact coverer In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#29 src="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#30 src="list.c"; line=47---Block(p@main = * (p@main ).n;)---> Location: id=1#29 src="list.c"; line=46, 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="list.c"; line=47---Block(p@main = * (p@main ).n;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=28; kind=Node; mark=Processed_Uncovered(time_stamp=24; region=[AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=29; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=30; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=29; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=30; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h != 1)---> Location: id=1#31 src="list.c"; line=48 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_list.c()] ] 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! bs_assert: And [* (a@main ).h == 3, * (p@main ).h != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 291: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 292: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 293: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 294: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 295: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 296: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 297: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 298: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 299: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 300: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 301: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 302: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 303: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 304: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 305: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 306: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 307: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 308: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 309: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 310: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 311: 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 [* (t@main ).h == 1, * (p@main ).h != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 312: 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 != 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h != 1] Simplify Assuming: (AND (NEQ (select (select v4 0) v1) 1) (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: > > > 313: 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!=1 SA> Executing action ! {p@main/x}(* (x)).h==1 UL> Post returning predicates: UL> And [] Writing back post region RGN> Processed node's region: RGN> [AtomicRegion: RGN> Location: id=1#31 src="list.c"; line=48 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="list.c"; line=48 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] SA> TVLA: Cover result: YES SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] BY: Node(edge=Location: id=1#33 src="list.c"; line=49---Block(p@main = * (p@main ).n;)---> Location: id=1#31 src="list.c"; line=48, data=Data(id=25; kind=Node; mark=Processed_Uncovered(time_stamp=20; region=[AtomicRegion: Location: id=1#31 src="list.c"; line=48 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_list.c()] ] Stack: []] ))) NEW SUMMARIES 1 vs. 0 **************************************************************************** Next iteration of model-check's big while-loop 25 Now processing tree node: Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=29; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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_list.c()] ] Stack: []] Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="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: 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_list.c()] ] 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! bs_assert: And [* (a@main ).h == 3, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 314: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 315: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 316: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 317: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 318: 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 [* (t@main ).h == 3, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 319: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 3, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 320: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 321: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 322: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 323: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 324: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 325: 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 [* (t@main ).h == 2, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 326: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 2, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 327: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h == 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 328: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (a@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 329: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h == 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 330: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (tmp@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 331: 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 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: > > > 332: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 333: Valid. true Contra ? true bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf SA> Forced content predicate: (* (p@main)).h==1 bs_assert: And [* (t@main ).h == 1, * (p@main ).h == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h == 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 334: 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 == 1] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (t@main ).h != 1, * (p@main ).h == 1] Simplify Assuming: (AND (EQ (select (select v4 0) v1) 1) (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: > > > 335: 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==1 SA> Executing action {p@main/x}(* (x)).h==1 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="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#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.leq -- arguments are: (suppressed-RJ) [AtomicRegion: Location: id=1#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] [AtomicRegion: Location: id=1#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] SA> Cover -> YES In Region.is_empty -- argument is: [AtomicRegion: Location: id=1#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] This node is covered *** COVERED [AtomicRegion: Location: id=1#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] BY: Node(edge=Location: id=1#29 src="list.c"; line=46---Pred(* (p@main ).h == 1)---> Location: id=1#30 src="list.c"; line=47, data=Data(id=17; kind=Node; mark=Processed_Uncovered(time_stamp=23; region=[AtomicRegion: Location: id=1#30 src="list.c"; line=47 AbstrDatRgn: Predicates: [...] Lattice: Bottom Stack: []] ))) NEW SUMMARIES 1 vs. 0 **************************************************************************** Next iteration of model-check's big while-loop 26 Now processing tree node: Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Stack: []] Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="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==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_list.c()] ] Pred(true) location (1,12) absdatapost postloc: (1,20) UL> Running post on command: UL> Pred(true) SA> Post of SA is called! bs_assert: * (a@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@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: > > > 336: 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 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: > > > 337: 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 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: > > > 338: 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 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: > > > 339: 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: (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: > > > 340: 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 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: > > > 341: 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: > > > 342: 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: > > > 343: 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 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: > > > 344: 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 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: > > > 345: 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 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: > > > 346: 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 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: > > > 347: 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 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: > > > 348: 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 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: > > > 349: 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: > > > 350: 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: > > > 351: 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 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: > > > 352: 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 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: > > > 353: 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 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: > > > 354: 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 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: > > > 355: 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 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: > > > 356: 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 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: > > > 357: 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: > > > 358: 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: > > > 359: 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#20 src="list.c"; line=36 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#20 src="list.c"; line=36 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#20 src="list.c"; line=36 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_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="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=14; kind=Node; mark=Processed_Uncovered(time_stamp=27; region=[AtomicRegion: Location: id=1#20 src="list.c"; line=36 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#20 src="list.c"; line=36---Block(* (p@main ).h = 2;)---> Location: id=1#22 src="list.c"; line=37, data=Data(id=31; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#20 src="list.c"; line=36---Block(* (p@main ).h = 2;)---> Location: id=1#22 src="list.c"; line=37, data=Data(id=31; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#20 src="list.c"; line=36 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_list.c()] ] Stack: []] Location: id=1#20 src="list.c"; line=36---Block(* (p@main ).h = 2;)---> Location: id=1#22 src="list.c"; line=37 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_list.c()] ] Block(* (p@main ).h = 2;) location (1,20) absdatapost postloc: (1,22) UL> Running post on command: UL> Block(* (p@main ).h = 2;) SA> Post of SA is called! 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 v4 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: > > > 360: 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 v4 0) v1) 2) (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: > > > 361: 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 v4 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: > > > 362: 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 v4 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: > > > 363: 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 == 2] simplify_assume sstk:0 convertToSimplifySyntax exp = And [* (p@main ).h == 3, * (p@main ).h == 2] Simplify Assuming: (AND (EQ (select (select v4 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: > > > 364: 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 [* (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 v4 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: > > > 365: 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 v4 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: > > > 366: 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 v4 0) v1) 2) (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: > > > 367: 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 v4 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: > > > 368: 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 v4 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: > > > 369: 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 v4 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: > > > 370: 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 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: > > > 371: 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 v4 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: > > > 372: 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 [* (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 v4 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: > > > 373: 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 v4 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: > > > 374: 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 v4 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: > > > 375: 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 v4 0) v1) 2) (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: > > > 376: 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 v4 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: > > > 377: 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 v4 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: > > > 378: 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 v4 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: > > > 379: 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 [* (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 v4 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: > > > 380: 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 v4 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: > > > 381: 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: > > > 382: 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: > > > 383: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf 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#22 src="list.c"; line=37 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#22 src="list.c"; line=37 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#22 src="list.c"; line=37 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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#20 src="list.c"; line=36---Block(* (p@main ).h = 2;)---> Location: id=1#22 src="list.c"; line=37, data=Data(id=31; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#20 src="list.c"; line=36---Block(* (p@main ).h = 2;)---> Location: id=1#22 src="list.c"; line=37, data=Data(id=31; kind=Node; mark=Processed_Uncovered(time_stamp=28; region=[AtomicRegion: Location: id=1#22 src="list.c"; line=37 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#22 src="list.c"; line=37---FunctionCall(t@main = malloc(512))--->Location: id=1#23 src="list.c"; line=38, data=Data(id=32; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#22 src="list.c"; line=37---FunctionCall(t@main = malloc(512))--->Location: id=1#23 src="list.c"; line=38, data=Data(id=32; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#22 src="list.c"; line=37 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_list.c()] ] Stack: []] Location: id=1#22 src="list.c"; line=37---FunctionCall(t@main = malloc(512))---> Location: id=1#23 src="list.c"; line=38 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_list.c()] ] FunctionCall(t@main = malloc(512)) location (1,22) absdatapost postloc: (1,23) 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#23 src="list.c"; line=38 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#23 src="list.c"; line=38 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#23 src="list.c"; line=38 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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#22 src="list.c"; line=37---FunctionCall(t@main = malloc(512))--->Location: id=1#23 src="list.c"; line=38, data=Data(id=32; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#22 src="list.c"; line=37---FunctionCall(t@main = malloc(512))--->Location: id=1#23 src="list.c"; line=38, data=Data(id=32; kind=Node; mark=Processed_Uncovered(time_stamp=29; region=[AtomicRegion: Location: id=1#23 src="list.c"; line=38 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:3 Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main != 0)---> Location: id=1#27 src="list.c"; line=39, data=Data(id=34; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 29 Now processing tree node: Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main != 0)---> Location: id=1#27 src="list.c"; line=39, data=Data(id=34; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#23 src="list.c"; line=38 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_list.c()] ] Stack: []] Location: id=1#23 src="list.c"; line=38---Pred(t@main != 0)--->Location: id=1#27 src="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==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_list.c()] ] Pred(t@main != 0) location (1,23) absdatapost postloc: (1,27) UL> Running post on command: UL> Pred(t@main != 0) SA> Post of SA is called! 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 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: > > > 384: 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 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: > > > 385: 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 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: > > > 386: 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 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: > > > 387: 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 (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: > > > 388: 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 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: > > > 389: 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: > > > 390: 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: > > > 391: 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 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: > > > 392: 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 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: > > > 393: 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 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: > > > 394: 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 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: > > > 395: 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 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: > > > 396: 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 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: > > > 397: 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: > > > 398: 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: > > > 399: 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 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: > > > 400: 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 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: > > > 401: 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 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: > > > 402: 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 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: > > > 403: 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 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: > > > 404: 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 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: > > > 405: 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: > > > 406: 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: > > > 407: 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#27 src="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] = {_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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#27 src="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] = {_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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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="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] = {_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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main != 0)---> Location: id=1#27 src="list.c"; line=39, data=Data(id=34; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main != 0)---> Location: id=1#27 src="list.c"; line=39, data=Data(id=34; kind=Node; mark=Processed_Uncovered(time_stamp=30; region=[AtomicRegion: Location: id=1#27 src="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] = {_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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#27 src="list.c"; line=39---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#12 src="list.c"; line=35, data=Data(id=35; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Updating the currently reached region Here: addCov **************************************************************************** Next iteration of model-check's big while-loop 30 Now processing tree node: Node(edge=Location: id=1#27 src="list.c"; line=39---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#12 src="list.c"; line=35, data=Data(id=35; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#27 src="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] = {_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_list.c()] ] Stack: []] Location: id=1#27 src="list.c"; line=39---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)--->Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Block(* (p@main ).n = t@main;p@main = * (p@main ).n;) location (1,27) absdatapost postloc: (1,12) 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#12 src="list.c"; line=35 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#12 src="list.c"; line=35 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_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#12 src="list.c"; line=35 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_list.c()] ] Stack: []] This node is not covered Constructing its successor children... This node looks like: (before updating) Node(edge=Location: id=1#27 src="list.c"; line=39---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#12 src="list.c"; line=35, data=Data(id=35; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#27 src="list.c"; line=39---Block(* (p@main ).n = t@main;p@main = * (p@main ).n;)---> Location: id=1#12 src="list.c"; line=35, data=Data(id=35; kind=Node; mark=Processed_Uncovered(time_stamp=31; region=[AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:4 Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=36; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; kind=Node; mark=Unprocessed)) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=37; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=36; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=37; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#12 src="list.c"; line=35 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_list.c()] ] Stack: []] Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Pred(true) location (1,12) absdatapost postloc: (1,21) UL> Running post on command: UL> Pred(true) SA> Post of SA is called! bs_assert: * (a@main ).h == 3 simplify_assume sstk:0 convertToSimplifySyntax exp = * (a@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: > > > 408: 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 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: > > > 409: 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 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: > > > 410: 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 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: > > > 411: 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: (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: > > > 412: 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 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: > > > 413: 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: > > > 414: 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: > > > 415: 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 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: > > > 416: 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 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: > > > 417: 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 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: > > > 418: 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 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: > > > 419: 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 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: > > > 420: 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 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: > > > 421: 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: > > > 422: 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: > > > 423: 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 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: > > > 424: 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 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: > > > 425: 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 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: > > > 426: 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 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: > > > 427: 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 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: > > > 428: 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 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: > > > 429: 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: > > > 430: 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: > > > 431: 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#21 src="list.c"; line=42 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#36 src="list.c"; line=51 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#21 src="list.c"; line=42 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_list.c()] ] Stack: []] [AtomicRegion: Location: id=1#21 src="list.c"; line=42 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_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#21 src="list.c"; line=42 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_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="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=37; kind=Node; mark=Unprocessed)) Updating the node's marking This node now looks like: Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#21 src="list.c"; line=42, data=Data(id=37; kind=Node; mark=Processed_Uncovered(time_stamp=32; region=[AtomicRegion: Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Stack: []] ))) Adding the children to the set of pending unprocessed#nodes Remaining nodes:5 Node(edge=Location: id=1#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=38; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#12 src="list.c"; line=35---Pred(true)--->Location: id=1#20 src="list.c"; line=36, data=Data(id=36; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#23 src="list.c"; line=38---Pred(t@main == 0)---> Location: id=1#24 src="list.c"; line=38, data=Data(id=33; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#10 src="list.c"; line=28---Pred(true)--->Location: id=1#11 src="list.c"; line=29, data=Data(id=12; kind=Node; mark=Unprocessed)) Node(edge=Location: id=1#5 src="list.c"; line=25---Pred(a@main == 0)---> Location: id=1#6 src="list.c"; line=25, data=Data(id=9; 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#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)---> Location: id=1#29 src="list.c"; line=46, data=Data(id=38; kind=Node; mark=Unprocessed)) In post -- arguments are: [AtomicRegion: Location: id=1#21 src="list.c"; line=42 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_list.c()] ] Stack: []] Location: id=1#21 src="list.c"; line=42---Block(* (p@main ).h = 3;p@main = a@main;)--->Location: id=1#29 src="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: 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_list.c()] ] Block(* (p@main ).h = 3;p@main = a@main;) location (1,21) absdatapost postloc: (1,29) UL> Running post on command: UL> Block(* (p@main ).h = 3;p@main = a@main;) SA> Post of SA is called! 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 v4 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: > > > 432: 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 v4 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: > > > 433: 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 v4 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: > > > 434: 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 v4 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: > > > 435: 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: (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: > > > 436: 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 v4 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: > > > 437: 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 [* (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 v4 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: > > > 438: 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 v4 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: > > > 439: 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 v4 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: > > > 440: 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 v4 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: > > > 441: 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 v4 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: > > > 442: 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 v4 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: > > > 443: 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 v4 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: > > > 444: 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 [* (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 v4 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: > > > 445: 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 v4 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: > > > 446: 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 v4 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: > > > 447: 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 v4 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: > > > 448: 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 v4 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: > > > 449: 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 v4 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: > > > 450: 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 v4 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: > > > 451: 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 [* (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 v4 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: > > > 452: 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 v4 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: > > > 453: Invalid. false Contra ? false bs_pop simplify_pnf sstk:1 Simplify Popping done pop_pnf 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#29 src="list.c"; line=46 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_list.c()] ] RGN> RGN> Stack: RGN> []] RGN> In Region.cap -- arguments are: [AtomicRegion: Location: id=1#29 src="list.c"; line=46 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}