[head true ty; head true (unfold context ty)]
with ProofEngineTypes.Fail _ -> [head true ty]
-let key term = head false term
+let key term = head false term;;
let index_term_and_unfolded_term univ context t ty =
let key = head true ty in
*)
type universe
+
val empty : universe
+
+(* retrieves the list of term that hopefully unify *)
val get_candidates: universe -> Cic.term -> Cic.term list
-val index:
- universe ->
- Cic.term -> (* key *)
- Cic.term -> (* value *)
- universe
+
+(* index [univ] [key] [term] *)
+val index: universe -> Cic.term -> Cic.term -> universe
+
+(* collapse non-indexable terms, removing coercions an unfolding the head
+ * constant if any *)
val keys: Cic.context -> Cic.term -> Cic.term list
-val key: Cic.term -> Cic.term
+
+(* collapse non-indexable terms, not removing coercions *)
+val key: Cic.term -> Cic.term
+
+(* indexes the term and its unfolded both without coercions *)
val index_term_and_unfolded_term:
universe -> Cic.context -> Cic.term -> Cic.term -> universe
+
+(* indexex the term without coercions, with coercions and unfolded without
+ * coercions *)
val index_local_term:
universe -> Cic.context -> Cic.term -> Cic.term -> universe
+
(* pairs are (term,ty) *)
val index_list:
universe -> Cic.context -> (Cic.term*Cic.term) list -> universe