X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_kernel%2FnReference.ml;h=bdf4f98a772950e44f70f2dd93f015a9e9e9f129;hb=738ff6e752f9e5facba4e92bdb64453062f52c7d;hp=d83fee65ab20ca6d67acefe078c0cfa295293a9e;hpb=1859726f40a0a14c2e1b4f1b44041ce1e552f729;p=helm.git diff --git a/helm/software/components/ng_kernel/nReference.ml b/helm/software/components/ng_kernel/nReference.ml index d83fee65a..bdf4f98a7 100644 --- a/helm/software/components/ng_kernel/nReference.ml +++ b/helm/software/components/ng_kernel/nReference.ml @@ -1,27 +1,15 @@ -(* Copyright (C) 2000, HELM Team. - * - * This file is part of HELM, an Hypertextual, Electronic - * Library of Mathematics, developed at the Computer Science - * Department, University of Bologna, Italy. - * - * HELM is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * HELM is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with HELM; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. - * - * For details, see the HELM World-Wide-Web page, - * http://cs.unibo.it/helm/. - *) +(* + ||M|| This file is part of HELM, an Hypertextual, Electronic + ||A|| Library of Mathematics, developed at the Computer Science + ||T|| Department, University of Bologna, Italy. + ||I|| + ||T|| HELM is free software; you can redistribute it and/or + ||A|| modify it under the terms of the GNU General Public License + \ / version 2 or (at your option) any later version. + \ / This software is distributed as is, NO WARRANTY. + V_______________________________________________________________ *) + +(* $Id$ *) exception IllFormedReference of string Lazy.t @@ -30,7 +18,7 @@ type spec = | Def | Fix of int * int (* fixno, recparamno *) | CoFix of int - | Ind of int + | Ind of bool * int (* inductive, indtyno *) | Con of int * int (* indtyno, constrno *) type reference = Ref of int * NUri.uri * spec @@ -91,7 +79,7 @@ fun s -> | "def" -> Ref (c (), u, Def) | "fix" -> let i,j = get2 s dot in Ref (c (), u, Fix (i,j)) | "cfx" -> let i = get1 s dot in Ref (c (), u, CoFix (i)) - | "ind" -> let i = get1 s dot in Ref (c (), u, Ind (i)) + | "ind" -> let b,i = get2 s dot in Ref (c (), u, Ind (b=1,i)) | "con" -> let i,j = get2 s dot in Ref (c (), u, Con (i,j)) | _ -> raise Not_found with Not_found -> raise (IllFormedReference (lazy s)) @@ -109,13 +97,24 @@ let string_of_reference (Ref (_,u,indinfo)) = | Def -> s2 ^ ".def" | Fix (i,j) -> s2 ^ ".fix(" ^ string_of_int i ^ "," ^ string_of_int j ^ ")" | CoFix i -> s2 ^ ".cfx(" ^ string_of_int i ^ ")" - | Ind i -> s2 ^ ".ind(" ^ string_of_int i ^ ")" + | Ind (b,i)->s2 ^".ind(" ^(if b then "1" else "0")^ "," ^ string_of_int i ^")" | Con (i,j) -> s2 ^ ".con(" ^ string_of_int i ^ "," ^ string_of_int j ^ ")" ;; -let reference_of_ouri u indinfo = - let u = NUri.nuri_of_ouri u in - reference_of_string (string_of_reference (Ref (~-1,u,indinfo))) +let mk_constructor j = function + | Ref (d, u, Ind (_,i)) -> + reference_of_string (string_of_reference (Ref (d, u, Con (i,j)))) + | _ -> assert false ;; -let ouri_of_reference (Ref (_,u,_)) = NUri.ouri_of_nuri u;; +let mk_fix i j = function + | Ref (d, u, Fix _) -> + reference_of_string (string_of_reference (Ref (d, u, Fix (i,j)))) + | _ -> assert false +;; + +let mk_cofix i = function + | Ref (d, u, CoFix _) -> + reference_of_string (string_of_reference (Ref (d, u, CoFix i))) + | _ -> assert false +;;