X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic%2FhelmLibraryObjects.ml;h=defc33f6cc63e6eef9b18b7c40332f0008214775;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=913fc9ef30f68ae0516b7dc56918a380b1ae63fb;hpb=f88549d5f75107867c34e2300bd4199d4d6e80b2;p=helm.git diff --git a/helm/ocaml/cic/helmLibraryObjects.ml b/helm/ocaml/cic/helmLibraryObjects.ml index 913fc9ef3..defc33f6c 100644 --- a/helm/ocaml/cic/helmLibraryObjects.ml +++ b/helm/ocaml/cic/helmLibraryObjects.ml @@ -24,30 +24,6 @@ let indconuri_of_uri uri = int_of_string (String.sub uri index_con (String.length uri - index_con))) -let term_of_uri ?(subst = []) uri = - let s = UriManager.string_of_uri uri in - try - (* Constant *) - (* TODO explicit substitutions? *) - let len = String.length s in - let sub = String.sub s (len -4) 4 in - if sub = ".con" then - const ~subst uri - else if sub = ".var" then - var ~subst uri - else - (try - (* Inductive Type *) - let (uri, typeno) = indtyuri_of_uri s in - mutind ~subst uri typeno - with - | UriManager.IllFormedUri _ | Failure _ | Invalid_argument _ -> - (* Constructor of an Inductive Type *) - let (uri, typeno, consno) = indconuri_of_uri s in - mutconstruct ~subst uri typeno consno) - with - | Invalid_argument _ | Not_found -> raise (UriManager.IllFormedUri s) - (** {2 Helm's objects shorthands} *) module Logic = @@ -118,8 +94,9 @@ module Reals = let rlt_URI = uri rlt_SURI let rgt_SURI = "cic:/Coq/Reals/Rdefinitions/Rgt.con" let rgt_URI = uri rgt_SURI - let rtheory_URI = uri "cic:/Coq/Reals/Rbase/RTheory.con" - let rinv_r1_URI = uri "cic:/Coq/Reals/Rbase/Rinv_R1.con" + let rtheory_URI = uri "cic:/Coq/Reals/RIneq/RTheory.con" + let rinv_r1_URI = uri "cic:/Coq/Reals/RIneq/Rinv_1.con" + let pow_URI = uri "cic:/Coq/Reals/Rfunctions/pow.con" let r = const r_URI let rplus = const rplus_URI @@ -146,18 +123,51 @@ module Peano = let ge_URI = uri ge_SURI let lt_SURI = "cic:/Coq/Init/Peano/lt.con" let lt_URI = uri lt_SURI - let gt_SURI = "cic:/Coq/Init/Peano/lt.con" + let gt_SURI = "cic:/Coq/Init/Peano/gt.con" let gt_URI = uri gt_SURI - let lt_URI = uri "cic:/Coq/Init/Peano/lt.con" let plus = const plus_URI let mult = const mult_URI let pred = const pred_URI end +module BinPos = + struct + let positive_SURI = "cic:/Coq/NArith/BinPos/positive.ind" + let positive_URI = uri positive_SURI + let xI = mutconstruct positive_URI 0 1 + let xO = mutconstruct positive_URI 0 2 + let xH = mutconstruct positive_URI 0 3 + let pplus_SURI = "cic:/Coq/NArith/BinPos/Pplus.con" + let pplus_URI = uri pplus_SURI + let pplus = const pplus_URI + let pminus_SURI = "cic:/Coq/NArith/BinPos/Pminus.con" + let pminus_URI = uri pminus_SURI + let pminus = const pminus_URI + let pmult_SURI = "cic:/Coq/NArith/BinPos/Pmult.con" + let pmult_URI = uri pmult_SURI + let pmult = const pmult_URI + end + module BinInt = struct + let zmult_URI = uri "cic:/Coq/ZArith/BinInt/Zmult.con" + let zmult = const zmult_URI let zplus_SURI = "cic:/Coq/ZArith/BinInt/Zplus.con" + let zplus_URI = uri zplus_SURI + let zplus = const zplus_URI + let zminus_SURI = "cic:/Coq/ZArith/BinInt/Zminus.con" + let zminus_URI = uri zminus_SURI + let zminus = const zminus_URI + let z_SURI = "cic:/Coq/ZArith/BinInt/Z.ind" + let z_URI = uri z_SURI + let z0 = mutconstruct z_URI 0 1 + let zpos = mutconstruct z_URI 0 2 + let zneg = mutconstruct z_URI 0 3 + let zopp_SURI = "cic:/Coq/ZArith/BinInt/Zopp.con" + let zopp_URI = uri zopp_SURI + let zopp = const zopp_URI + let zpower_URI = uri "cic:/Coq/ZArith/Zpower/Zpower.con" end (** {2 Helpers for creating common terms} @@ -182,3 +192,12 @@ let build_real n = in aux n +let build_bin_pos n = + if n < 1 then raise NegativeInteger; + let rec aux = function + | 1 -> BinPos.xH + | n when n mod 2 = 0 -> Cic.Appl [ BinPos.xO; aux (n / 2) ] + | n -> Cic.Appl [ BinPos.xI; aux (n / 2) ] + in + aux n +