X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_kernel%2FnReference.ml;h=e209d05bef8e8d3c28b13093addee5f4be070b69;hb=a7237500e8a2a4237a6ae8ba4b8301f7bbcb6acb;hp=2892915c340b83f450dd0b4acc10b9989221f9f1;hpb=f4d71b463ae8510e80a40cf4df475d19fab3df2c;p=helm.git diff --git a/helm/software/components/ng_kernel/nReference.ml b/helm/software/components/ng_kernel/nReference.ml index 2892915c3..e209d05be 100644 --- a/helm/software/components/ng_kernel/nReference.ml +++ b/helm/software/components/ng_kernel/nReference.ml @@ -25,10 +25,15 @@ type reference = Ref of NUri.uri * spec let eq = (==);; +let compare (Ref (u1,s1)) (Ref (u2,s2)) = + let res = NUri.compare u1 u2 in + if res = 0 then compare s1 s2 else res +;; + module OrderedStrings = struct type t = string - let compare (s1 : t) (s2 : t) = compare s1 s2 + let compare (s1 : t) (s2 : t) = Pervasives.compare s1 s2 end ;; @@ -119,7 +124,16 @@ let string_of_reference (Ref (u,indinfo)) = let mk_constructor j = function | Ref (u, Ind (_,i,l)) -> reference_of_string (string_of_reference (Ref (u, Con (i,j,l)))) - | _ -> assert false + | r -> + raise (IllFormedReference (lazy ("NON INDUCTIVE TYPE REFERENCE: " ^ + string_of_reference r))); +;; +let mk_indty b = function + | Ref (u, Con (i,_,l)) -> + reference_of_string (string_of_reference (Ref (u, Ind (b,i,l)))) + | r -> + raise (IllFormedReference (lazy + ("NON INDUCTIVE TYPE CONSTRUCTOR REFERENCE: " ^ string_of_reference r))); ;; let mk_fix i j = function @@ -133,3 +147,11 @@ let mk_cofix i = function reference_of_string (string_of_reference (Ref (u, CoFix i))) | _ -> assert false ;; + +let reference_of_spec u spec = + reference_of_string (string_of_reference (Ref (u, spec))) +;; + + + +