let is_bibtexable (set:set) : [ `yes | `no of (entry list)] =
    let has_bibtex =
      Ls.exists ~f:(function `bibtex _ -> true | _ -> falsein
    let is_miscable e =
      (Ls.exists (function `id _ -> true | _ -> false) e) &&
        (Ls.exists (function `title _ -> true | _ -> false) e) &&
        (* (Ls.exists (function `authors _ -> true | _ -> false) e) && *)
            (Ls.exists (function `how _ -> true | _ -> false) e)
            (* (Ls.exists (function `year _ -> true | _ -> false) e) *)
        in
        let invalids =
            Ls.find_all
                (fun entry -> not ((has_bibtex entry) || (is_miscable entry)))
                set in
        match invalids with
        | [] -> `yes
        | l -> `no l