]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/grafite/grafiteAstPp.ml
Demodulate used to be a reduction_kind and it used to take a ~pattern.
[helm.git] / helm / software / components / grafite / grafiteAstPp.ml
index 24d37c4f318d8c1f0ee1b90b6521d5d6333861fa..941f75d9d6dae352574be19861ddc79d1775f2c5 100644 (file)
@@ -36,7 +36,6 @@ let command_terminator = tactical_terminator
 let pp_idents idents = "[" ^ String.concat "; " idents ^ "]"
 
 let pp_reduction_kind ~term_pp = function
-  | `Demodulate -> "demodulate"
   | `Normalize -> "normalize"
   | `Reduce -> "reduce"
   | `Simpl -> "simplify"
@@ -66,6 +65,10 @@ let pp_intros_specs = function
 
 let terms_pp ~term_pp terms = String.concat ", " (List.map term_pp terms)
 
+let opt_string_pp = function
+   | None -> ""
+   | Some what -> what ^ " "
+
 let rec pp_tactic ~term_pp ~lazy_term_pp =
   let pp_reduction_kind = pp_reduction_kind ~term_pp in
   let pp_tactic_pattern = pp_tactic_pattern ~lazy_term_pp ~term_pp in
@@ -79,7 +82,7 @@ let rec pp_tactic ~term_pp ~lazy_term_pp =
   | Assumption _ -> "assumption"
   | Change (_, where, with_what) ->
       sprintf "change %s with %s" (pp_tactic_pattern where) (lazy_term_pp with_what)
-  | Clear (_,id) -> sprintf "clear %s" id
+  | Clear (_,ids) -> sprintf "clear %s" (pp_idents ids)
   | ClearBody (_,id) -> sprintf "clearbody %s" id
   | Constructor (_,n) -> "constructor " ^ string_of_int n
   | Contradiction _ -> "contradiction"
@@ -87,14 +90,15 @@ let rec pp_tactic ~term_pp ~lazy_term_pp =
      "cut " ^ term_pp term ^
       (match ident with None -> "" | Some id -> " as " ^ id)
   | Decompose (_, [], what, names) ->
-      sprintf "decompose %s%s" what (pp_intros_specs (None, names)) 
+      sprintf "decompose %s%s" (opt_string_pp what) (pp_intros_specs (None, names)) 
   | Decompose (_, types, what, names) ->
       let to_ident = function
          | Ident id -> id
         | Type _   -> assert false 
       in
       let types = List.rev_map to_ident types in
-      sprintf "decompose %s %s%s" (pp_idents types) what (pp_intros_specs (None, names)) 
+      sprintf "decompose %s %s%s" (pp_idents types) (opt_string_pp what) (pp_intros_specs (None, names)) 
+  | Demodulate _ -> "demodulate"
   | Discriminate (_, term) -> "discriminate " ^ term_pp term
   | Elim (_, term, using, num, idents) ->
       sprintf "elim " ^ term_pp term ^
@@ -126,9 +130,10 @@ let rec pp_tactic ~term_pp ~lazy_term_pp =
       sprintf "intros%s%s"
         (match num with None -> "" | Some num -> " " ^ string_of_int num)
         (match idents with [] -> "" | idents -> " " ^ pp_idents idents)
-  | LApply (_, level_opt, terms, term, ident_opt) -> 
-      sprintf "lapply %s%s%s%s" 
-        (match level_opt with None -> "" | Some i -> " depth = " ^ string_of_int i ^ " ")  
+  | LApply (_, linear, level_opt, terms, term, ident_opt) -> 
+      sprintf "lapply %s%s%s%s%s" 
+        (if linear then " linear " else "")
+       (match level_opt with None -> "" | Some i -> " depth = " ^ string_of_int i ^ " ")  
         (term_pp term) 
         (match terms with [] -> "" | _ -> " to " ^ terms_pp ~term_pp terms)
         (match ident_opt with None -> "" | Some ident -> " as " ^ ident)