| Some term -> Some (k term)
and aux_capture_variable (term, typ_opt) = k term, aux_opt typ_opt
and aux_patterns patterns = List.map aux_pattern patterns
- and aux_pattern ((head, vars), term) =
- ((head, List.map aux_capture_variable vars), k term)
+ and aux_pattern ((head, hrefs, vars), term) =
+ ((head, hrefs, List.map aux_capture_variable vars), k term)
and aux_subst (name, term) = (name, k term)
and aux_substs substs = List.map aux_subst substs
in
in
visit_ast ~special_k strip_attributes t
+let rec get_idrefs =
+ function
+ | Ast.AttributedTerm (`IdRef id, t) -> id :: get_idrefs t
+ | Ast.AttributedTerm (_, t) -> get_idrefs t
+ | _ -> []
+
let meta_names_of_term term =
let rec names = ref [] in
let add_name n =
and aux_branch (pattern, term) =
aux_pattern pattern ;
aux term
- and aux_pattern (head, vars) =
+ and aux_pattern (head, _, vars) =
List.iter aux_capture_var vars
and aux_definition (var, term, i) =
aux_capture_var var ;
let find_appl_pattern_uris ap =
let rec aux acc =
function
- | Ast.UriPattern uri ->
- (try
- ignore (List.find (fun uri' -> UriManager.eq uri uri') acc);
- acc
- with Not_found -> uri :: acc)
+ | Ast.UriPattern uri -> uri :: acc
| Ast.ImplicitPattern
| Ast.VarPattern _ -> acc
| Ast.ApplPattern apl -> List.fold_left aux acc apl
in
- aux [] ap
+ let uris = aux [] ap in
+ HExtlib.list_uniq (List.fast_sort UriManager.compare uris)
let rec find_branch =
function