- Cic.term * (* proof *)
- (Cic.term * (* type *)
- Cic.term * (* left side *)
- Cic.term) * (* right side *)
- Cic.metasenv * (* environment for metas *)
- Cic.term list (* arguments *)
-;;
-
-type environment = Cic.metasenv * Cic.context * CicUniv.universe_graph;;
-
+ int * (* weight *)
+ proof *
+ (Cic.term * (* type *)
+ Cic.term * (* left side *)
+ Cic.term * (* right side *)
+ Utils.comparison) * (* ordering *)
+ Cic.metasenv * (* environment for metas *)
+ Cic.term list (* arguments *)
+
+and proof =
+ | NoProof
+ | BasicProof of Cic.term
+ | ProofBlock of
+ Cic.substitution * UriManager.uri *
+ (* name, ty, eq_ty, left, right *)
+ (Cic.name * Cic.term * Cic.term * Cic.term * Cic.term) *
+ (Utils.pos * equality) * proof
+ | ProofGoalBlock of proof * equality
+ | ProofSymBlock of Cic.term Cic.explicit_named_substitution * proof
+
+
+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
+
+val unification:
+ Cic.metasenv -> Cic.context -> Cic.term -> Cic.term ->
+ CicUniv.universe_graph ->
+ Cic.substitution * Cic.metasenv * CicUniv.universe_graph