]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/acic_procedural/acic2Procedural.ml
snapshot
[helm.git] / helm / software / components / acic_procedural / acic2Procedural.ml
index deb3088f22537b32e368a03b54de920e8776a488..071377c63f0a90eb5665c85ce80043e9032557e0 100644 (file)
@@ -39,6 +39,7 @@ module PEH  = ProofEngineHelpers
 module HEL  = HExtlib
 module DTI  = DoubleTypeInference
 module NU   = CicNotationUtil
+module L    = Librarian
 
 module Cl   = ProceduralClassify
 module T    = ProceduralTypes
@@ -54,7 +55,7 @@ type status = {
    case: int list
 }
 
-let debug = false
+let debug = ref false
 
 (* helpers ******************************************************************)
 
@@ -194,7 +195,7 @@ let mk_convert st ?name sty ety note =
    let e = Cn.hole "" in
    let csty, cety = H.cic sty, H.cic ety in
    let script = 
-      if debug then
+      if !debug then
          let sname = match name with None -> "" | Some (id, _) -> id in
          let note = Printf.sprintf "%s: %s\nSINTH: %s\nEXP: %s"
             note sname (Pp.ppterm csty) (Pp.ppterm cety)
@@ -218,7 +219,7 @@ let mk_convert st ?name sty ety note =
 let convert st ?name v = 
    match get_inner_types st v with
       | None            -> 
-         if debug then [T.Note "NORMAL: NO INNER TYPES"] else []
+         if !debug then [T.Note "NORMAL: NO INNER TYPES"] else []
       | Some (sty, ety) -> mk_convert st ?name sty ety "NORMAL"
 
 let convert_elim st ?name t v pattern =
@@ -341,7 +342,10 @@ and proc_const st what =
 and proc_appl st what hd tl =
    let proceed, dtext = test_depth st in
    let script = if proceed then
-      let ty = get_type "TC2" st hd in
+      let ty = match get_inner_types st hd with
+         | Some (ity, _) -> H.cic ity 
+        | None          -> get_type "TC2" st hd 
+      in
       let classes, rc = Cl.classify st.context ty in
       let goal_arity, goal = match get_inner_types st what with
          | None            -> 0, None
@@ -489,10 +493,13 @@ let procedural_of_acic_object ~ids_to_inner_sorts ~ids_to_inner_types ?depth
       context     = [];
       case        = []
    } in
+   L.time_stamp "P : LEVEL 2  ";
    HLog.debug "Procedural: level 2 transformation";
    let steps = proc_obj st ?flavour anobj in
+   L.time_stamp "P : RENDERING";
    HLog.debug "Procedural: grafite rendering";
-   List.rev (T.render_steps [] steps)
+   let r = List.rev (T.render_steps [] steps) in
+   L.time_stamp "P : DONE     "; r
 
 let procedural_of_acic_term ~ids_to_inner_sorts ~ids_to_inner_types ?depth
    prefix context annterm =