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)