anchor.diff:      PAtomList = [list_to_atom([P]) ||P <-PList],
       [{var, Line, PAtom}|| PAtom <- PAtomList].
   
  -base_fn_clause(Predicate, ParamCount ) when is_atom(Predicate) andalso is_integer(ParamCount) ->
  -    ParamList = [{atom,46,Predicate}] ++ make_param_list( ParamCount - 1,46),
  +
  +get_return_value(Function, PL) ->
  +    {{succeed, [{'RetVal', RetVal}]},_}= PL({prove, {find_return, Function, {'RetVal'}}}),
  +    RetVal.
  +
  +     
  +base_fn_clause(Predicate, ParamCount,PL ) when is_atom(Predicate) andalso is_integer(ParamCount) ->
  +    RetVal = get_return_value({'/',Predicate,ParamCount},PL),
  +    
  +    ParamList = [{atom,46,Predicate}] ++ case RetVal of 
  +					     boolean -> make_param_list( ParamCount,46);
  +					     _ -> make_param_list(ParamCount -1, 46)++ [{tuple,47,[{atom,47,'X'}]}]
  +					 end,
  +							
       {clause,46,
        [{match,46,
          {var,46,'_Prove'},
  
positive.code: compile_file(File,Module) when is_atom(Module)->
      PL@                   = erlog:new(),
      {ok,PL@}             = PL@({consult, File}),
      {Exports,PL@}        = find_exports(PL@),
      ?debugVal(Exports),
      {ok, AST@}           = load_base_ast(),
      {ok, AST@}           = replace_filename(AST@, File),
      {ok, AST@}           = replace_module_name(AST@, Module),
  
negative.code: 
  find_exports(PL) ->
      PL@ = PL,
      case PL@({prove, {find_exports, {'Exports'}}}) of 
  	{{succeed, Res},PL@} ->
  	    Exports = [{Fun, Arity } || {'/', Fun,Arity} <- proplists:get_value('Exports', Res)],
  