]> matita.cs.unibo.it Git - helm.git/commitdiff
fixed *: and n,m:
authorEnrico Tassi <enrico.tassi@inria.fr>
Thu, 6 Jul 2006 08:18:49 +0000 (08:18 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Thu, 6 Jul 2006 08:18:49 +0000 (08:18 +0000)
helm/software/components/tactics/continuationals.ml

index eeff9f9bf537783b0e859cfc686cbd0e09aa41b9..a7c624120d45d85cb93965f80a69fcc668ed1a60 100644 (file)
@@ -330,6 +330,18 @@ struct
                 (([ loc ], t @+ filter_open g, [],`BranchTag)
                 :: (loc_tl, t', k', tag) :: s))
       | Shift, _ -> fail (lazy "can't shift goals here")
+      | Pos i_s, ([ loc ], [], [],`BranchTag) :: (g', t', k', tag) :: s
+        when is_fresh loc ->
+          let l_js = List.filter (fun (i, _) -> List.mem i i_s) (g' @+ [loc]) in
+          new_stack
+            ((l_js, [], [],`BranchTag)
+             :: ([ loc ] @+ g' @- l_js, t', k', tag) :: s)
+      | Pos i_s, (g, t, k,`BranchTag) :: (g', t', k', tag) :: s ->
+          let l_js = List.filter (fun (i, pos) -> List.mem i i_s) g' in
+          new_stack
+            ((l_js, [], [],`BranchTag)
+             :: (g' @- l_js, t' @+ filter_open g, k', tag) :: s)
+(*
       | Pos i_s, ([ loc ], [], [],`BranchTag) :: (g', t', k', tag) :: s
         when is_fresh loc ->
           let l_js = List.filter (fun (i, _) -> List.mem i i_s) g' in
@@ -341,12 +353,24 @@ struct
           new_stack
             ((l_js, [], [],`BranchTag)
              :: (g' @- l_js, t' @+ filter_open g, k', tag) :: s)
+*)
       | Pos _, _ -> fail (lazy "can't use relative positioning here")
+      | Wildcard, ([ loc ] , t, k, `BranchTag) :: (g', t', k', tag) :: s
+          when is_fresh loc ->
+            new_stack
+              (([loc] @+ g', [], [], `BranchTag)
+                :: ([], t' @+ k, k', tag) :: s)
+      | Wildcard, (g, t, k, `BranchTag) :: (g', t', k', tag) :: s ->
+            new_stack
+              ((g', [], [], `BranchTag)
+                :: ([], t' @+ filter_open g @+ k, k', tag) :: s)
+(*
       | Wildcard, (g, t, k, `BranchTag) :: (g', t', k', tag) :: s
         when g = [] || is_fresh (List.hd g) ->
           new_stack
             ((g', [], [], `BranchTag)
              :: ([], t' @+ filter_open g @+ k, k', tag) :: s)
+*)
       | Wildcard, _ -> fail (lazy "can't use wildcard here")
       | Merge, (g, t, k,`BranchTag) :: (g', t', k', tag) :: s ->
           new_stack ((t @+ filter_open g @+ g' @+ k, t', k', tag) :: s)