X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=components%2Ftactics%2Ftacticals.ml;h=06f96a573c28f367c244a649080c4fc136c7e981;hb=b3779638cd49747f4b71784fba57cfb0a56297f5;hp=63b8e12b59a362ddafa4deb855bf215ecf6db5be;hpb=da7f6fd7cc9658cfb2423db0d619811b43552976;p=helm.git diff --git a/components/tactics/tacticals.ml b/components/tactics/tacticals.ml index 63b8e12b5..06f96a573 100644 --- a/components/tactics/tacticals.ml +++ b/components/tactics/tacticals.ml @@ -42,7 +42,7 @@ module PET = ProofEngineTypes let id_tac = let id_tac (proof,goal) = - let _, metasenv, _, _, _ = proof in + let _, metasenv, _subst, _, _, _ = proof in let _, _, _ = CicUtil.lookup_meta goal metasenv in (proof,[goal]) in @@ -50,7 +50,7 @@ let id_tac = let fail_tac = let fail_tac (proof,goal) = - let _, metasenv, _, _, _ = proof in + let _, metasenv, _subst, _ , _, _ = proof in let _, _, _ = CicUtil.lookup_meta goal metasenv in raise (PET.Fail (lazy "fail tactical")) in @@ -113,7 +113,7 @@ struct back to obtain the result of the tactic *) let mk_tactic f = PET.mk_tactic - (fun (proof, goal) as pstatus -> + (fun ((proof, goal) as pstatus) -> let stack = [ [ 1, Stack.Open goal ], [], [], `NoTag ] in let istatus = pstatus, stack in let (proof, _, _), stack = f istatus in @@ -183,15 +183,14 @@ let seq ~tactics = (* Tacticals that cannot be implemented on top of tynycals *) let first ~tactics = - let rec first ~(tactics: (string * tactic) list) status = + let rec first ~(tactics: tactic list) status = info (lazy "in Tacticals.first"); match tactics with [] -> raise (PET.Fail (lazy "first: no tactics left")) - | (descr, tac)::tactics -> - info (lazy ("Tacticals.first IS TRYING " ^ descr)); + | tac::tactics -> try let res = PET.apply_tactic tac status in - info (lazy ("Tacticals.first: " ^ descr ^ " succedeed!!!")); + info (lazy ("Tacticals.first: succedeed!!!")); res with PET.Fail _ -> first ~tactics status @@ -230,18 +229,16 @@ let rec repeat_tactic ~tactic = (* This tries tactics until one of them solves the goal *) let solve_tactics ~tactics = - let rec solve_tactics ~(tactics: (string * tactic) list) status = + let rec solve_tactics ~(tactics: tactic list) status = info (lazy "in Tacticals.solve_tactics"); match tactics with - | (descr, currenttactic)::moretactics -> - info (lazy ("Tacticals.solve_tactics is trying " ^ descr)); + | currenttactic::moretactics -> (try let (proof, opened) as output_status = PET.apply_tactic currenttactic status in match opened with - | [] -> info (lazy ("Tacticals.solve_tactics: " ^ descr ^ - " solved the goal!!!")); + | [] -> info (lazy ("Tacticals.solve_tactics: solved the goal!!!")); output_status | _ -> info (lazy ("Tacticals.solve_tactics: try the next tactic")); raise (PET.Fail (lazy "Goal not solved")) @@ -258,8 +255,8 @@ let solve_tactics ~tactics = let progress_tactic ~tactic = let msg = lazy "Failed to progress" in - let progress_tactic (((_,metasenv,_,_,_),_) as istatus) = - let ((_,metasenv',_,_,_),_) as ostatus = + let progress_tactic (((_,metasenv,_subst,_,_,_),_) as istatus) = + let ((_,metasenv',_subst,_,_,_),_) as ostatus = PET.apply_tactic tactic istatus in (*CSC: Warning