let rec add_property ips ip =
if not (Property.Set.mem ip !ips) then
begin
ips := Property.Set.add ip !ips ;
add_consolidation ips (Consolidation.get ip)
end
and add_consolidation ips = function
| Consolidation.Never_tried
| Consolidation.Considered_valid
| Consolidation.Valid _
| Consolidation.Invalid _
| Consolidation.Inconsistent _ -> ()
| Consolidation.Valid_under_hyp ps
| Consolidation.Unknown ps
| Consolidation.Invalid_under_hyp ps
| Consolidation.Valid_but_dead ps
| Consolidation.Invalid_but_dead ps
| Consolidation.Unknown_but_dead ps ->
add_pending ips ps
and add_pending ipref (ps:Consolidation.pending) =
E.Map.iter
(fun _ m ->
E.Map.iter
(fun _ ips ->
Property.Set.iter (add_property ipref) ips
) m
) ps