anchor.diff:      : bool =
       Option.isSome (implementation_of file_system_map key)
   
  -(*
  - * Public interface
  - *)
  -let cache_file_name (fn:string) : string =
  +
  +let cache_file_name_internal (fn:string) : string * bool =  //bool indicates if the cache file exists
     let cache_fn = fn ^ (if Options.lax () then ".checked.lax" else ".checked") in
     let mname = fn |> module_name_of_file in
     let should_already_be_there = mname |> Options.should_be_already_cached in
  
positive.code:           let files = List.map norm_path files in
            let files = List.map (fun s -> replace_chars s ' ' "\\ ") files in
            let files = String.concat "\\\n\t" files in
  
            //this one prints:
            //   a.fst.checked: b.fst.checked c.fsti.checked a.fsti
            Util.print3 "%s: %s \\\n\t%s\n\n"
                        (cache_file file_name)
                        norm_f
                        files;
  
  
negative.code:   let raise_error (msg:string) = FStar.Errors.raise_err (FStar.Errors.Error_AlreadyCachedAssertionFailure, msg) in
    
    match Options.find_file (cache_fn |> Util.basename) with
    | Some path -> path, true
    | None      -> if should_already_be_there then raise_error error_msg_does_not_exist else FStar.Options.prepend_cache_dir cache_fn, false
  
  (*
   * Public interface
   *)
  let cache_file_name fn = fn |> cache_file_name_internal |> fst
  
  let file_of_dep_aux
                  (use_checked_file:bool)
  