u, t, ty
;;
-let find_library_equalities dbd context status maxmeta =
+let find_library_equalities caso_strano dbd context status maxmeta =
let module C = Cic in
let module S = CicSubstitution in
let module T = CicTypeChecker in
let _ = <:start<equations_for_goal>> in
- let eqs = (MetadataQuery.equations_for_goal ~dbd status) in
+ let signature =
+ if caso_strano then
+ begin
+ let proof, goalno = status in
+ let _,metasenv,_,_ = proof in
+ let metano,context,ty = CicUtil.lookup_meta goalno metasenv in
+ match ty with
+ | Cic.Appl[Cic.MutInd(u,0,_);eq_ty;l;r] ->
+ (let mainl, sigl = MetadataConstraints.signature_of l in
+ let mainr, sigr = MetadataConstraints.signature_of r in
+ match mainl,mainr with
+ | Some (uril,tyl), Some (urir, tyr)
+ when LibraryObjects.is_eq_URI uril &&
+ LibraryObjects.is_eq_URI urir &&
+ tyl = tyr ->
+ Some (mainl,MetadataConstraints.UriManagerSet.union sigl sigr)
+ | _ ->
+ let u = (UriManager.uri_of_string
+ (UriManager.string_of_uri u ^ "#xpointer(1/1)")) in
+ let main = Some (u, []) in
+ Some (main,MetadataConstraints.UriManagerSet.union sigl sigr))
+ | _ -> assert false
+ end
+ else
+ None
+ in
+ let eqs = (MetadataQuery.equations_for_goal ~dbd ?signature status) in
let _ = <:stop<equations_for_goal>> in
let candidates =
List.fold_left