method vfunc f =
let kf = Extlib.the self#current_kf in
if not (Data_for_aorai.isIgnoredFunction f.svar.vname) then begin
let pre_st,pre_tr =
(Aorai_utils.mk_abstract_pre auto kf) in
let post_st,post_tr =
(Aorai_utils.mk_abstract_post auto kf) in
if f.svar.vname = root then
begin
List.iter (
fun tr ->
if
(pre_tr.(tr.Promelaast.numt)) &&
((tr.Promelaast.start.Promelaast.init==Bool3.False)
|| not (Aorai_utils.isCrossableAtInit tr kf))
then
begin
pre_tr.(tr.Promelaast.numt)<- false;
pre_st.(tr.Promelaast.stop.Promelaast.nums)<- false
end
) (snd auto);
List.iter (
fun tr ->
if (pre_tr.(tr.Promelaast.numt)) then
pre_st.(tr.Promelaast.stop.Promelaast.nums) <- true
) (snd auto);
if considerAcceptance then begin
List.iter (
fun tr ->
if (post_tr.(tr.Promelaast.numt)) &&
(tr.Promelaast.stop.Promelaast.acceptation==Bool3.False)
then
begin
post_tr.(tr.Promelaast.numt)<- false;
post_st.(tr.Promelaast.stop.Promelaast.nums)<- false
end
) (snd auto);
List.iter (
fun tr ->
if (post_tr.(tr.Promelaast.numt)) then
post_st.(tr.Promelaast.stop.Promelaast.nums) <- true
) (snd auto)
end
end;
Data_for_aorai.set_func_pre f.svar.vname (pre_st, pre_tr) ;
Data_for_aorai.set_func_post f.svar.vname (post_st, post_tr)
end;
DoChildren