let included_find x p rs find map bases =
    let rs' = try snd (find x map) with Not_found -> [] in
    forall
      (fun r ->
         let found_in_map =
           exists (fun r' -> range_subset r r') rs' in
         if F.is_true found_in_map then found_in_map else
           let found_in_bases =
             exists
               (fun (q,r') -> F.p_and (A.equal p q) (range_subset r r'))
               bases in
           F.p_or found_in_map found_in_bases
      ) rs