X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Facic_procedural%2Facic2Procedural.ml;h=23b934d51d35fc151f0833f2e518838c820a59ac;hb=c8767aa622ca1df27c537682e1d8694dc591d98a;hp=d54130a0cd75fdac58377ec0a4920660aa921852;hpb=246f6c5ab89ddbec94dec411ba00daf987214688;p=helm.git diff --git a/helm/software/components/acic_procedural/acic2Procedural.ml b/helm/software/components/acic_procedural/acic2Procedural.ml index d54130a0c..23b934d51 100644 --- a/helm/software/components/acic_procedural/acic2Procedural.ml +++ b/helm/software/components/acic_procedural/acic2Procedural.ml @@ -54,7 +54,9 @@ type status = { intros: string option list; clears: string list; clears_note: string; - case: int list + case: int list; + skip_thm_and_qed : bool; + skip_initial_lambdas : bool; } (* helpers ******************************************************************) @@ -374,9 +376,14 @@ and proc_proof st t = (Pp.ppterm (H.cic it)) (Pp.ppterm (H.cic et))) | None -> None, "\nNo types" in - let context, clears = Cn.get_clears st.context (H.cic t) xtypes in + let context, clears = + if st.skip_initial_lambdas then + st.context, [] + else + Cn.get_clears st.context (H.cic t) xtypes + in let note = Pp.ppcontext st.context ^ note in - {st with context = context; clears = clears; clears_note = note} + {st with context = context; clears = clears; clears_note = note; } in match t with | C.ALambda (_, name, w, t) -> proc_lambda st name w t @@ -422,13 +429,22 @@ let proc_obj st = function let ast = proc_proof st v in let steps, nodes = T.count_steps 0 ast, T.count_nodes 0 ast in let text = Printf.sprintf "tactics: %u\nnodes: %u" steps nodes in - T.Theorem (Some s, t, "") :: ast @ [T.Qed text] + let ast = + if st.skip_initial_lambdas then + match ast with + | T.Intros _::tl -> tl + | ast -> ast + else ast + in + if st.skip_thm_and_qed then ast + else T.Theorem (Some s, t, "") :: ast @ [T.Qed text] | _ -> failwith "not a theorem" (* interface functions ******************************************************) -let acic2procedural ~ids_to_inner_sorts ~ids_to_inner_types ?depth prefix aobj = +let acic2procedural ~ids_to_inner_sorts ~ids_to_inner_types ?depth +?(skip_thm_and_qed=false) ?(skip_initial_lambdas=false) prefix aobj = let st = { sorts = ids_to_inner_sorts; types = ids_to_inner_types; @@ -439,7 +455,9 @@ let acic2procedural ~ids_to_inner_sorts ~ids_to_inner_types ?depth prefix aobj = intros = []; clears = []; clears_note = ""; - case = [] + case = []; + skip_thm_and_qed = skip_thm_and_qed; + skip_initial_lambdas = skip_initial_lambdas; } in HLog.debug "Procedural: level 2 transformation"; let steps = proc_obj st aobj in