X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Ftactics%2Fcontinuationals.ml;h=93695fa9312d6a1398f76d162c264a9e3edc2de7;hb=2957d67b2b74224cf3bb768461d60f07062e1b9d;hp=a7c624120d45d85cb93965f80a69fcc668ed1a60;hpb=7245ccc4076a799ac50546e70327320a8625b5e8;p=helm.git diff --git a/helm/software/components/tactics/continuationals.ml b/helm/software/components/tactics/continuationals.ml index a7c624120..93695fa93 100644 --- a/helm/software/components/tactics/continuationals.ml +++ b/helm/software/components/tactics/continuationals.ml @@ -327,50 +327,21 @@ struct | [] -> fail (lazy "no more goals to shift") | loc :: loc_tl -> new_stack - (([ loc ], t @+ filter_open g, [],`BranchTag) + (([ loc ], t @+ filter_open g @+ k, [],`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 + | Pos i_s, ([ loc ], t, [],`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 + let l_js = List.filter (fun (i, _) -> List.mem i i_s) ([loc] @+ g') 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 - 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, _) -> List.mem i i_s) g' in - new_stack - ((l_js, [], [],`BranchTag) - :: (g' @- l_js, t' @+ filter_open g, k', tag) :: s) -*) + ((l_js, t , [],`BranchTag) + :: (([ loc ] @+ g') @- l_js, t', k', tag) :: s) | Pos _, _ -> fail (lazy "can't use relative positioning here") - | Wildcard, ([ loc ] , t, k, `BranchTag) :: (g', t', k', tag) :: s + | Wildcard, ([ loc ] , t, [], `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) -*) + (([loc] @+ g', t, [], `BranchTag) + :: ([], t', 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)