]> matita.cs.unibo.it Git - helm.git/blobdiff - components/tactics/declarative.ml
Removed a couple of assertions.
[helm.git] / components / tactics / declarative.ml
index 413a43fe3a7af542838b1da2379938a85bddc90b..fc8b175a273e04970d1af8dd2b32c97cb2ae5383 100644 (file)
@@ -46,61 +46,79 @@ let suppose t id ty =
 ;;
 
 let by_term_we_proved ~dbd t ty id ty' =
-match id with None -> assert false | Some id ->
  let just =
   match t with
-     None -> Tactics.auto ~dbd ~params:[]
+     None -> Tactics.auto ~dbd ~params:[] (* da sistemare *) ~universe:Universe.empty
    | Some t -> Tactics.apply t
  in
-  let continuation =
-   match ty' with
-      None -> Tacticals.id_tac
-    | Some ty' ->
-        Tactics.change ~pattern:(None,[id,Cic.Implicit (Some `Hole)],None)
-         (fun _ metasenv ugraph -> ty',metasenv,ugraph)
-  in
-   Tacticals.thens
-   ~start:
-     (Tactics.cut ty
-       ~mk_fresh_name_callback:(fun _ _ _  ~typ -> Cic.Name id))
-   ~continuations:[ continuation ; just ]
+  match id with
+     None ->
+      (match ty' with
+          None -> assert false
+        | Some ty' ->
+           Tacticals.then_
+            ~start:(Tactics.change
+              ~pattern:(ProofEngineTypes.conclusion_pattern None)
+              (fun _ metasenv ugraph -> ty,metasenv,ugraph))
+            ~continuation:just
+      )
+   | Some id ->
+       let continuation =
+        match ty' with
+           None -> Tacticals.id_tac
+         | Some ty' ->
+             Tactics.change ~pattern:(None,[id,Cic.Implicit (Some `Hole)],None)
+              (fun _ metasenv ugraph -> ty',metasenv,ugraph)
+       in
+        Tacticals.thens
+        ~start:
+          (Tactics.cut ty
+            ~mk_fresh_name_callback:(fun _ _ _  ~typ -> Cic.Name id))
+        ~continuations:[ continuation ; just ]
 ;;
 
 let bydone ~dbd t =
  let just =
   match t with
-     None -> Tactics.auto ~dbd ~params:[]
+     None -> Tactics.auto ~dbd ~params:[] ~universe:Universe.empty
    | Some t -> Tactics.apply t
  in
   just
 ;;
 
 let we_need_to_prove t id ty =
-match id with None -> assert false | Some id ->
- let aux status =
-  let cont,cutted =
-   match ty with
-      None -> Tacticals.id_tac,t
-    | Some ty ->
-       Tactics.change ~pattern:(None,[id,Cic.Implicit (Some `Hole)],None)
-        (fun _ metasenv ugraph -> t,metasenv,ugraph), ty in
-  let proof,goals =
-   ProofEngineTypes.apply_tactic
-    (Tacticals.thens
-      ~start:
-       (Tactics.cut cutted
-         ~mk_fresh_name_callback:(fun _ _ _  ~typ -> Cic.Name id))
-      ~continuations:[cont])
-    status
-  in
-   let goals' =
-    match goals with
-       [fst; snd] -> [snd; fst]
-     | _ -> assert false
-   in
-    proof,goals'
- in
-  ProofEngineTypes.mk_tactic aux
+ match id with
+    None ->
+     (match ty with
+         None -> Tacticals.id_tac (*BUG: check missing here *)
+       | Some ty ->
+          Tactics.change ~pattern:(ProofEngineTypes.conclusion_pattern None)
+           (fun _ metasenv ugraph -> ty,metasenv,ugraph))
+  | Some id ->
+     let aux status =
+      let cont,cutted =
+       match ty with
+          None -> Tacticals.id_tac,t
+        | Some ty ->
+           Tactics.change ~pattern:(None,[id,Cic.Implicit (Some `Hole)],None)
+             (fun _ metasenv ugraph -> t,metasenv,ugraph), ty in
+      let proof,goals =
+       ProofEngineTypes.apply_tactic
+        (Tacticals.thens
+          ~start:
+           (Tactics.cut cutted
+             ~mk_fresh_name_callback:(fun _ _ _  ~typ -> Cic.Name id))
+          ~continuations:[cont])
+        status
+      in
+       let goals' =
+        match goals with
+           [fst; snd] -> [snd; fst]
+         | _ -> assert false
+       in
+        proof,goals'
+     in
+      ProofEngineTypes.mk_tactic aux
 ;;
 
 let existselim t id1 t1 id2 t2 =
@@ -132,8 +150,8 @@ let rewritingstep ~dbd lhs rhs just conclude =
    match just with
       None ->
        Tactics.auto ~dbd
-        ~params:["paramodulation","1"; "timeout","3"]
-    | Some just -> Tactics.apply just
+        ~params:["paramodulation","1"; "timeout","3"] ~universe:Universe.empty
+    | Some just -> Tactics.apply just 
   in
    match lhs with
       None ->