]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/grafite_parser/grafiteDisambiguate.ml
changed auto_tac params type and all derivate tactics like applyS and
[helm.git] / helm / software / components / grafite_parser / grafiteDisambiguate.ml
index dfaf5b42426816f6f3dcfed8c333dc4c5565726a..516c4af20301e1a6946995cbe44c60fd05491448 100644 (file)
@@ -108,6 +108,18 @@ let disambiguate_reduction_kind text prefix_len lexicon_status_ref = function
   | `Whd as kind -> kind
 ;;
 
+let disambiguate_auto_params 
+  disambiguate_term metasenv context (terms, params) 
+=
+    let metasenv, terms = 
+      List.fold_right 
+       (fun t (metasenv, terms) ->
+         let metasenv,t = disambiguate_term context metasenv t in
+         metasenv,t::terms) terms (metasenv, [])
+    in
+    metasenv, (terms, params)
+;;
+
 let rec disambiguate_tactic 
   lexicon_status_ref context metasenv (text,prefix_len,tactic) 
 =
@@ -121,6 +133,9 @@ let rec disambiguate_tactic
     disambiguate_lazy_term text prefix_len lexicon_status_ref in
   let disambiguate_tactic metasenv tac =
    disambiguate_tactic lexicon_status_ref context metasenv (text,prefix_len,tac)
+  in
+  let disambiguate_auto_params m p = 
+    disambiguate_auto_params disambiguate_term m context p
   in
    match tactic with
     (* Higher  order tactics *)
@@ -181,11 +196,13 @@ let rec disambiguate_tactic
         let metasenv,cic = disambiguate_term context metasenv term in
         metasenv,GrafiteAst.Apply (loc, cic)
     | GrafiteAst.ApplyS (loc, term, params) ->
+        let metasenv, params = disambiguate_auto_params metasenv params in
         let metasenv,cic = disambiguate_term context metasenv term in
         metasenv,GrafiteAst.ApplyS (loc, cic, params)
     | GrafiteAst.Assumption loc ->
         metasenv,GrafiteAst.Assumption loc
     | GrafiteAst.AutoBatch (loc,params) ->
+        let metasenv, params = disambiguate_auto_params metasenv params in
         metasenv,GrafiteAst.AutoBatch (loc,params)
     | GrafiteAst.Cases (loc, what, idents) ->
         let metasenv,what = disambiguate_term context metasenv what in
@@ -217,8 +234,9 @@ let rec disambiguate_tactic
         metasenv,GrafiteAst.Cut (loc, ident, cic)
     | GrafiteAst.Decompose (loc, names) ->
          metasenv,GrafiteAst.Decompose (loc, names)
-    | GrafiteAst.Demodulate loc ->
-        metasenv,GrafiteAst.Demodulate loc
+    | GrafiteAst.Demodulate (loc, params) ->
+        let metasenv, params = disambiguate_auto_params metasenv params in
+        metasenv,GrafiteAst.Demodulate (loc, params)
     | GrafiteAst.Destruct (loc, Some terms) ->
         let map term (metasenv, terms) =
            let metasenv, term = disambiguate_term context metasenv term in
@@ -401,7 +419,12 @@ let rec disambiguate_tactic
        let metasenv,cic'= disambiguate_term context metasenv term2 in
         let metasenv,cic'' =
         match term3 with
-           `Auto _ as t -> metasenv,t
+          | `SolveWith term ->
+            let metasenv,term = disambiguate_term context metasenv term in
+             metasenv, `SolveWith term
+         | `Auto params -> 
+              let metasenv, params = disambiguate_auto_params metasenv params in
+              metasenv,`Auto params
          | `Term t -> 
             let metasenv,t = disambiguate_term context metasenv t in
              metasenv,`Term t
@@ -495,7 +518,10 @@ let disambiguate_macro
    | GrafiteAst.Check (loc,term) ->
       let metasenv,term = disambiguate_term context metasenv term in
        metasenv,GrafiteAst.Check (loc,term)
-   | GrafiteAst.AutoInteractive _
+   | GrafiteAst.AutoInteractive (loc, params) -> 
+      let metasenv, params = 
+        disambiguate_auto_params disambiguate_term metasenv context params in
+      metasenv, GrafiteAst.AutoInteractive (loc, params)
    | GrafiteAst.Hint _
    | GrafiteAst.WLocate _
    | GrafiteAst.Inline _ as macro ->