type rule = SuperpositionRight | SuperpositionLeft | Demodulation
+(* every equality group has its own bag. the bag contains the infos necessary
+ * for building the proof. FIXME: should also contain maxmeta! *)
type equality_bag
val mk_equality_bag: unit -> equality_bag
(Cic.name option) list -> goal_proof -> proof -> Subst.substitution -> int ->
Cic.term -> string
+val draw_proof:
+ equality_bag ->
+ (Cic.name option) list -> goal_proof -> proof -> int -> unit
+
val pp_proofterm: Cic.term -> string
+
+val mk_eq_ind :
+ UriManager.uri ->
+ Cic.term ->
+ Cic.term ->
+ Cic.term ->
+ Cic.term ->
+ Cic.term ->
+ Cic.term ->
+ Cic.term
val mk_equality :
equality_bag -> int * proof *
(* build_goal_proof [eq_URI] [goal_proof] [initial_proof] [ty]
* [ty] is the type of the goal *)
val build_goal_proof:
+ ?contextualize:bool ->
+ ?forward:bool ->
equality_bag ->
UriManager.uri -> goal_proof -> proof -> Cic.term-> int list ->
Cic.context -> Cic.metasenv ->
(** meta convertibility between two equations *)
val meta_convertibility_eq: equality -> equality -> bool
+val meta_convertibility_subst:
+ Cic.term -> Cic.term -> Cic.metasenv -> Cic.substitution option
val is_weak_identity: equality -> bool
val is_identity: Utils.environment -> equality -> bool