let fun_assign_visible ff_opt v =
    let keep_annots = SlicingParameters.Mode.KeepAnnotations.get () in
    SlicingParameters.debug ~level:2 "[SlicingTransform.Visibility.fun_assign_visible (with keep_annots = %s)] ?"
      (if keep_annots then "true" else "false");
    let visible = keep_annots &&
      match ff_opt with
        | Isrc -> true
        | Iproto -> true
        | Iff (ff,_) -> all_logic_var_visible_assigns ff v
    in SlicingParameters.debug ~level:2 "[SlicingTransform.Visibility.fun_assign_visible] -> %s"
              (if visible then "yes" else "no");
       visible