]> matita.cs.unibo.it Git - helm.git/commitdiff
progress made better, still not perfect
authorEnrico Tassi <enrico.tassi@inria.fr>
Tue, 1 Apr 2008 14:08:11 +0000 (14:08 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Tue, 1 Apr 2008 14:08:11 +0000 (14:08 +0000)
helm/software/components/tactics/tacticals.ml

index f647ebccaa9d199181761b2233c59f00ace13f1d..6e91de1fcd4194e02322dcce88598dd63cbe1370 100644 (file)
@@ -290,16 +290,18 @@ let solve_tactics ~tactics =
 
 let progress_tactic ~tactic =
   let msg = lazy "Failed to progress" in
-  let progress_tactic (((_,metasenv,_subst,_,_,_),_) as istatus) =
-    let ((_,metasenv',_subst,_,_,_),_) as ostatus =
+  let progress_tactic (((_,metasenv,_subst,_,_,_),g) as istatus) =
+    let ((_,metasenv',_subst,_,_,_),opened) as ostatus =
      PET.apply_tactic tactic istatus
     in
-     (*CSC: Warning
-       If just the index of some metas changes the tactic is recognized
-       as a progressing one. This is wrong. *)
-     if metasenv' = metasenv then
-      raise (PET.Fail msg)
-     else
-      ostatus
+    match opened with
+    | [g1] ->
+        let _,_,oldty = CicUtil.lookup_meta g metasenv in
+        let _,_,newty = CicUtil.lookup_meta g1 metasenv' in
+        if oldty = newty then
+          raise (PET.Fail msg)
+        else
+          ostatus
+    | _ -> ostatus
   in
   PET.mk_tactic progress_tactic