X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fcontent_pres%2FtermContentPres.ml;h=1ee406623ad91e61fab3745cef335e9636499d13;hb=6719c0e318b312b51b089fea3d69d1b7103245ea;hp=6b3dcc297689783fbe1a99459cc287764c5d0511;hpb=380284d5b85bd218f812bc0f9725061912c291f6;p=helm.git diff --git a/helm/software/components/content_pres/termContentPres.ml b/helm/software/components/content_pres/termContentPres.ml index 6b3dcc297..1ee406623 100644 --- a/helm/software/components/content_pres/termContentPres.ml +++ b/helm/software/components/content_pres/termContentPres.ml @@ -100,7 +100,7 @@ let binder_symbol s = let string_of_sort_kind = function | `Prop -> "Prop" | `Set -> "Set" - | `CProp -> "CProp" + | `CProp _ -> "CProp" | `Type _ -> "Type" let pp_ast0 t k = @@ -151,8 +151,11 @@ let pp_ast0 t k = space ] in - let mk_case_pattern (head, href, vars) = - hbox true false (ident_w_href href head :: List.map aux_var vars) + let mk_case_pattern = + function + Ast.Pattern (head, href, vars) -> + hbox true false (ident_w_href href head :: List.map aux_var vars) + | Ast.Wildcard -> builtin_symbol "_" in let patterns' = List.map @@ -201,7 +204,8 @@ let pp_ast0 t k = hvbox false true [ keyword "let"; space; hvbox false true [ - aux_var var; space; builtin_symbol "\\def"; break; top_pos (k s) ]; + aux_var var; space; + builtin_symbol "\\def"; break; top_pos (k s) ]; break; space; keyword "in" ]; break; k t ]) @@ -209,14 +213,16 @@ let pp_ast0 t k = let rec_op = match rec_kind with `Inductive -> "rec" | `CoInductive -> "corec" in - let mk_fun (args, (name,ty), body, _) = - List.map aux_var args ,k name, HExtlib.map_option k ty, k body in + let mk_fun (args, (name,ty), body, rec_param) = + List.map aux_var args ,k name, HExtlib.map_option k ty, k body, + fst (List.nth args rec_param) + in let mk_funs = List.map mk_fun in let fst_fun, tl_funs = match mk_funs funs with hd :: tl -> hd, tl | [] -> assert false in let fst_row = - let (params, name, ty, body) = fst_fun in + let (params, name, ty, body, rec_param) = fst_fun in hvbox false true ([ keyword "let"; space; @@ -224,6 +230,7 @@ let pp_ast0 t k = space; name] @ params @ + [space; keyword "on" ; space ; rec_param ;space ] @ (match ty with None -> [] | Some ty -> [builtin_symbol ":"; ty]) @ [ builtin_symbol "\\def"; break; @@ -231,12 +238,13 @@ let pp_ast0 t k = in let tl_rows = List.map - (fun (params, name, ty, body) -> + (fun (params, name, ty, body, rec_param) -> [ break; hvbox false true ([ keyword "and"; name] @ params @ + [space; keyword "on" ; space; rec_param ;space ] @ (match ty with None -> [] | Some ty -> [builtin_symbol ":"; ty]) @ @@ -461,8 +469,9 @@ let fill_pos_info l1_pattern = l1_pattern in aux true l1_pattern *) +let counter = ref ~-1 +let reset () = counter := ~-1;; let fresh_id = - let counter = ref ~-1 in fun () -> incr counter; !counter @@ -542,8 +551,8 @@ let instantiate_level2 env term = | Ast.Case (term, indty, outty_opt, patterns) -> Ast.Case (aux env term, indty, aux_opt env outty_opt, List.map (aux_branch env) patterns) - | Ast.LetIn (var, t1, t2) -> - Ast.LetIn (aux_capture_var env var, aux env t1, aux env t2) + | Ast.LetIn (var, t1, t3) -> + Ast.LetIn (aux_capture_var env var, aux env t1, aux env t3) | Ast.LetRec (kind, definitions, body) -> Ast.LetRec (kind, List.map (aux_definition env) definitions, aux env body) @@ -571,8 +580,11 @@ let instantiate_level2 env term = and aux_capture_var env (name, ty_opt) = (aux env name, aux_opt env ty_opt) and aux_branch env (pattern, term) = (aux_pattern env pattern, aux env term) - and aux_pattern env (head, hrefs, vars) = - (head, hrefs, List.map (aux_capture_var env) vars) + and aux_pattern env = + function + Ast.Pattern (head, hrefs, vars) -> + Ast.Pattern (head, hrefs, List.map (aux_capture_var env) vars) + | Ast.Wildcard -> Ast.Wildcard and aux_definition env (params, var, term, i) = (List.map (aux_capture_var env) params, aux_capture_var env var, aux env term, i) and aux_substs env substs = @@ -662,3 +674,5 @@ let instantiate_level2 env term = let _ = load_patterns21 [] + +