let subranches_numbers revs rev =
let len = List.length rev.rev_number in
let subbranches_rev =
List.filter
(fun r ->
len < List.length r.rev_number &&
(fst (Ocvs_misc.get_n_first_ele len r.rev_number)) = rev.rev_number
)
revs
in
let l =
List.fold_left
(fun acc -> fun r ->
let (_, remain) = Ocvs_misc.get_n_first_ele len r.rev_number in
match remain with
| n :: _ when not (List.mem n acc)-> n :: acc
| _ -> acc
)
[]
subbranches_rev
in
List.map (fun n -> rev.rev_number @ [n]) l