let fun_precond_visible ff_opt p =
SlicingParameters.debug ~level:2 "[SlicingTransform.Visibility.fun_precond_visible] %a ?"
!Ast_printer.d_predicate_named
{ name = []; loc = locUnknown; content = p };
let visible = match ff_opt with
| Isrc -> true
| Iproto -> true
| Iff (ff,_) ->
let kf = M.get_ff_kf ff in
let pdg = !Db.Pdg.get kf in
try
let nodes = !Db.Pdg.find_fun_precond_nodes pdg p in
data_nodes_visible ff nodes
with Extlib.NotYetImplemented _ ->
all_logic_var_visible ff p
in SlicingParameters.debug ~level:2 "[SlicingTransform.Visibility.precond_visible] -> %s"
(if visible then "yes" else "no");
visible