let repository universe =
let cmp : int -> int -> bool = (=) in
let size = Cudf.universe_size universe in
let confl = Conflict.create size in
let deps = PTbl.create size Formula._true in
let c = CudfAdd.init_conflicts universe in
Cudf.iteri_packages (fun i p1 ->
List.iter (fun p2 ->
let j = CudfAdd.vartoint universe p2 in
Conflict.add confl i j
) (CudfAdd.who_conflicts c universe p1);
let dll =
List.map (fun disjunction ->
let dl =
List.fold_left (fun l2 vpkg ->
let l = CudfAdd.who_provides universe vpkg in
List.fold_left (fun acc i -> (CudfAdd.vartoint universe i)::acc) l2 l
) [] disjunction
in
Formula.lit_disj (List.unique ~cmp dl)
) p1.Cudf.depends
in
PTbl.set deps i (Formula.conjl dll)
) universe;
(deps,confl)