type equality =
- Cic.term * (* proof *)
- (Cic.term * (* type *)
- Cic.term * (* left side *)
- Cic.term) * (* right side *)
- Cic.metasenv * (* environment for metas *)
- Cic.term list (* arguments *)
+ Cic.term * (* proof *)
+ (Cic.term * (* type *)
+ Cic.term * (* left side *)
+ Cic.term * (* right side *)
+ Utils.comparison) * (* ordering *)
+ Cic.metasenv * (* environment for metas *)
+ Cic.term list (* arguments *)
;;
type environment = Cic.metasenv * Cic.context * CicUniv.universe_graph;;
+exception MatchingFailure
+
+val matching:
+ Cic.metasenv -> Cic.context -> Cic.term -> Cic.term ->
+ CicUniv.universe_graph ->
+ Cic.substitution * Cic.metasenv * CicUniv.universe_graph
+
+
(**
Performs the beta expansion of the term "where" w.r.t. "what",
i.e. returns the list of all the terms t s.t. "(t what) = where".
val string_of_equality: ?env:environment -> equality -> string
val subsumption: environment -> equality -> equality -> bool
+
+val metas_of_term: Cic.term -> int list
+
+val fix_metas: int -> equality -> int * equality