]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/grafite_engine/grafiteEngine.ml
Minor change.
[helm.git] / helm / software / components / grafite_engine / grafiteEngine.ml
index 582ad112d667e559aec395cde9a3c992731656ff..a125d23be41c79f212c8e5b0999753ec6d101888 100644 (file)
@@ -68,6 +68,9 @@ let tactic_of_ast status ast =
   | GrafiteAst.Auto (_,params) ->
       AutoTactic.auto_tac ~params ~dbd:(LibraryDb.instance ()) 
        ~universe:status.GrafiteTypes.universe
+  | GrafiteAst.Cases (_, what, names) ->
+      Tactics.cases_intros ~mk_fresh_name_callback:(namer_of names)
+        what
   | GrafiteAst.Change (_, pattern, with_what) ->
      Tactics.change ~pattern with_what
   | GrafiteAst.Clear (_,id) -> Tactics.clear id
@@ -79,14 +82,16 @@ let tactic_of_ast status ast =
      Tactics.cut ~mk_fresh_name_callback:(namer_of names) term
   | GrafiteAst.Decompose (_, types, what, names) -> 
       let to_type = function
-         | GrafiteAst.Type (uri, typeno) -> uri, typeno
+         | GrafiteAst.Type (uri, typeno) -> uri, Some typeno
         | GrafiteAst.Ident _            -> assert false
       in
       let user_types = List.rev_map to_type types in
       let dbd = LibraryDb.instance () in
       let mk_fresh_name_callback = namer_of names in
       Tactics.decompose ~mk_fresh_name_callback ~dbd ~user_types ?what
-  | GrafiteAst.Demodulate _ -> Tactics.demodulate ~dbd:(LibraryDb.instance ())
+  | GrafiteAst.Demodulate _ -> 
+      Tactics.demodulate 
+       ~dbd:(LibraryDb.instance ()) ~universe:status.GrafiteTypes.universe
   | GrafiteAst.Destruct (_,term) -> Tactics.destruct term
   | GrafiteAst.Elim (_, what, using, depth, names) ->
       Tactics.elim_intros ?using ?depth ~mk_fresh_name_callback:(namer_of names)
@@ -160,10 +165,15 @@ let tactic_of_ast status ast =
   | GrafiteAst.Assume (_, id, t) -> Declarative.assume id t
   | GrafiteAst.Suppose (_, t, id, t1) -> Declarative.suppose t id t1
   | GrafiteAst.By_term_we_proved (_, t, ty, id, t1) ->
-     Declarative.by_term_we_proved ~dbd:(LibraryDb.instance()) t ty id t1
+     Declarative.by_term_we_proved ~dbd:(LibraryDb.instance())
+      ~universe:status.GrafiteTypes.universe t ty id t1
   | GrafiteAst.We_need_to_prove (_, t, id, t2) ->
      Declarative.we_need_to_prove t id t2
-  | GrafiteAst.Bydone (_, t) -> Declarative.bydone ~dbd:(LibraryDb.instance()) t
+  | GrafiteAst.Bydone (_, t) ->
+     Declarative.bydone ~dbd:(LibraryDb.instance())
+      ~universe:status.GrafiteTypes.universe t
+  | GrafiteAst.We_proceed_by_cases_on (_, t, t1) ->
+     Declarative.we_proceed_by_cases_on t t1
   | GrafiteAst.We_proceed_by_induction_on (_, t, t1) ->
      Declarative.we_proceed_by_induction_on t t1
   | GrafiteAst.Byinduction (_, t, id) -> Declarative.byinduction t id
@@ -173,7 +183,8 @@ let tactic_of_ast status ast =
   | GrafiteAst.Case (_,id,params) -> Declarative.case id params
   | GrafiteAst.AndElim(_,t,id1,t1,id2,t2) -> Declarative.andelim t id1 t1 id2 t2
   | GrafiteAst.RewritingStep (_,termine,t1,t2,cont) ->
-     Declarative.rewritingstep ~dbd:(LibraryDb.instance ()) termine t1 t2 cont
+     Declarative.rewritingstep ~dbd:(LibraryDb.instance ())
+      ~universe:status.GrafiteTypes.universe termine t1 t2 cont
 
 let classify_tactic tactic = 
   match tactic with
@@ -438,9 +449,10 @@ let refinement_toolkit = {
   RefinementTool.pack_coercion_obj = CicRefine.pack_coercion_obj;
  }
   
-let eval_coercion status ~add_composites uri arity =
+let eval_coercion status ~add_composites uri arity baseuri =
  let status,compounds =
   GrafiteSync.add_coercion ~add_composites refinement_toolkit status uri arity 
+   baseuri
  in
  let moo_content = 
    List.map (coercion_moo_statement_of arity) (uri::compounds)
@@ -637,6 +649,7 @@ let rec eval_command = {ec_go = fun ~disambiguate_command opts status
       status,[] 
   | GrafiteAst.Coercion (loc, uri, add_composites, arity) ->
      eval_coercion status ~add_composites uri arity
+      (GrafiteTypes.get_string_option status "baseuri")
   | GrafiteAst.Default (loc, what, uris) as cmd ->
      LibraryObjects.set_default what uris;
      GrafiteTypes.add_moo_content [cmd] status,[]