int_of_string
(String.sub uri index_con (String.length uri - index_con)))
-let term_of_uri uri =
+let term_of_uri ?(subst = []) uri =
let s = UriManager.string_of_uri uri in
try
(* Constant *)
let len = String.length s in
let sub = String.sub s (len -4) 4 in
if sub = ".con" then
- const uri
+ const ~subst uri
else if sub = ".var" then
- var uri
+ var ~subst uri
else
(try
(* Inductive Type *)
let (uri, typeno) = indtyuri_of_uri s in
- mutind uri typeno
+ 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 uri typeno consno)
+ mutconstruct ~subst uri typeno consno)
with
| Invalid_argument _ | Not_found -> raise (UriManager.IllFormedUri s)
module Logic =
struct
- let eq_URI = uri "cic:/Coq/Init/Logic/eq.ind"
+ let eq_SURI = "cic:/Coq/Init/Logic/eq.ind"
+ let eq_URI = uri eq_SURI
+ let eq_XURI = eq_SURI ^ "#xpointer(1/1)"
+ let eq_ind_URI = uri "cic:/Coq/Init/Logic/eq_ind.con"
+ let eq_ind_r_URI = uri "cic:/Coq/Init/Logic/eq_ind_r.con"
let true_URI = uri "cic:/Coq/Init/Logic/True.ind"
let false_URI = uri "cic:/Coq/Init/Logic/False.ind"
+ let false_ind_URI = uri "cic:/Coq/Init/Logic/False_ind.con"
+ let ex_SURI = "cic:/Coq/Init/Logic/ex.ind"
+ let ex_URI = uri ex_SURI
+ let ex_XURI = ex_SURI ^ "#xpointer(1/1)"
+ let ex_ind_URI = uri "cic:/Coq/Init/Logic/ex_ind.con"
+ let and_SURI = "cic:/Coq/Init/Logic/and.ind"
+ let and_URI = uri and_SURI
+ let and_XURI = and_SURI ^ "#xpointer(1/1)"
+ let and_ind_URI = uri "cic:/Coq/Init/Logic/and_ind.con"
+ let or_SURI = "cic:/Coq/Init/Logic/or.ind"
+ let or_URI = uri or_SURI
+ let or_XURI = or_SURI ^ "#xpointer(1/1)"
+ let not_SURI = "cic:/Coq/Init/Logic/not.con"
+ let not_URI = uri not_SURI
+ let iff_SURI = "cic:/Coq/Init/Logic/iff.con"
+ let iff_URI = uri "cic:/Coq/Init/Logic/iff.con"
+ let sym_eq_URI = uri "cic:/Coq/Init/Logic/sym_eq.con"
+ let trans_eq_URI = uri "cic:/Coq/Init/Logic/trans_eq.con"
+ let absurd_URI = uri "cic:/Coq/Init/Logic/absurd.con"
end
module Logic_Type =
module Reals =
struct
let r_URI = uri "cic:/Coq/Reals/Rdefinitions/R.con"
- let rplus_URI = uri "cic:/Coq/Reals/Rdefinitions/Rplus.con"
+ let rplus_SURI = "cic:/Coq/Reals/Rdefinitions/Rplus.con"
+ let rplus_URI = uri rplus_SURI
+ let rminus_URI = uri "cic:/Coq/Reals/Rdefinitions/Rminus.con"
let rmult_URI = uri "cic:/Coq/Reals/Rdefinitions/Rmult.con"
- let ropp_URI = uri "cic:/Coq/Reals/Rdefinitions/Ropp.con"
+ let rdiv_URI = uri "cic:/Coq/Reals/Rdefinitions/Rdiv.con"
+ let ropp_SURI = "cic:/Coq/Reals/Rdefinitions/Ropp.con"
+ let ropp_URI = uri ropp_SURI
+ let rinv_SURI = "cic:/Coq/Reals/Rdefinitions/Rinv.con"
+ let rinv_URI = uri rinv_SURI
let r0_URI = uri "cic:/Coq/Reals/Rdefinitions/R0.con"
let r1_URI = uri "cic:/Coq/Reals/Rdefinitions/R1.con"
+ let rle_SURI = "cic:/Coq/Reals/Rdefinitions/Rle.con"
+ let rle_URI = uri rle_SURI
+ let rge_SURI = "cic:/Coq/Reals/Rdefinitions/Rge.con"
+ let rge_URI = uri rge_SURI
+ let rlt_SURI = "cic:/Coq/Reals/Rdefinitions/Rlt.con"
+ 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 r = const r_URI
let rplus = const rplus_URI
module Peano =
struct
- let plus_URI = uri "cic:/Coq/Init/Peano/plus.con"
+ let plus_SURI = "cic:/Coq/Init/Peano/plus.con"
+ let plus_URI = uri plus_SURI
+ let minus_URI = uri "cic:/Coq/Init/Peano/minus.con"
let mult_URI = uri "cic:/Coq/Init/Peano/mult.con"
let pred_URI = uri "cic:/Coq/Init/Peano/pred.con"
+ let le_SURI = "cic:/Coq/Init/Peano/le.ind"
+ let le_URI = uri le_SURI
+ let le_XURI = le_SURI ^ "#xpointer(1/1)"
+ let ge_SURI = "cic:/Coq/Init/Peano/ge.con"
+ 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_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 BinInt =
+ struct
+ let zplus_SURI = "cic:/Coq/ZArith/BinInt/Zplus.con"
+ end
+
(** {2 Helpers for creating common terms}
* (e.g. numbers)} *)