+ | l -> Layout (Box ((H, false, false), l))
+
+let group = function
+ | [ a ] -> a
+ | l -> Layout (Group l)
+
+let ungroup =
+ let rec aux acc =
+ function
+ [] -> List.rev acc
+ | Layout (Group terms) :: terms' -> aux acc (terms @ terms')
+ | term :: terms -> aux (term :: acc) terms
+ in
+ aux []
+
+let dress sauce =
+ let rec aux =
+ function
+ | [] -> []
+ | [hd] -> [hd]
+ | hd :: tl -> hd :: sauce :: aux tl
+ in
+ aux
+
+let find_appl_pattern_uris ap =
+ let rec aux acc =
+ function
+ | GrafiteAst.UriPattern uri ->
+ (try
+ ignore (List.find (fun uri' -> UriManager.eq uri uri') acc);
+ acc
+ with Not_found -> uri :: acc)
+ | GrafiteAst.VarPattern _ -> acc
+ | GrafiteAst.ApplPattern apl -> List.fold_left aux acc apl
+ in
+ aux [] ap