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