+ Ast.DisjRuleElem(res) ->
+ (* why was the following done? ors have to be kept together for
+ efficiency, so they are considered at once and not individually
+ anded with everything else *)
+ let re =
+ let all_inhs = List.map Ast.get_inherited res in
+ let inhs =
+ List.fold_left
+ (function prev ->
+ function inh ->
+ Common.inter_set inh prev)
+ (List.hd all_inhs) (List.tl all_inhs) in
+ Ast.make_inherited_term (Ast.unwrap re) inhs in
+ [[(List.length res,strip re)]]