which is just an URI recognized by the pretty printer.
nUri.cmx: nUri.cmi
nReference.cmo: nUri.cmi nReference.cmi
nReference.cmx: nUri.cmx nReference.cmi
-nCicUtils.cmo: nCic.cmo nCicUtils.cmi
-nCicUtils.cmx: nCic.cmx nCicUtils.cmi
-nCicSubstitution.cmo: nCicUtils.cmi nCic.cmo nCicSubstitution.cmi
-nCicSubstitution.cmx: nCicUtils.cmx nCic.cmx nCicSubstitution.cmi
+nCicUtils.cmo: nReference.cmi nCic.cmo nCicUtils.cmi
+nCicUtils.cmx: nReference.cmx nCic.cmx nCicUtils.cmi
+nCicSubstitution.cmo: nReference.cmi nCicUtils.cmi nCic.cmo \
+ nCicSubstitution.cmi
+nCicSubstitution.cmx: nReference.cmx nCicUtils.cmx nCic.cmx \
+ nCicSubstitution.cmi
oCic2NCic.cmo: nUri.cmi nReference.cmi nCicSubstitution.cmi nCic.cmo \
oCic2NCic.cmi
oCic2NCic.cmx: nUri.cmx nReference.cmx nCicSubstitution.cmx nCic.cmx \
oCic2NCic.cmi
-nCic2OCic.cmo: nUri.cmi nReference.cmi nCic.cmo nCic2OCic.cmi
-nCic2OCic.cmx: nUri.cmx nReference.cmx nCic.cmx nCic2OCic.cmi
+nCic2OCic.cmo: nUri.cmi nReference.cmi nCicEnvironment.cmi nCic.cmo \
+ nCic2OCic.cmi
+nCic2OCic.cmx: nUri.cmx nReference.cmx nCicEnvironment.cmx nCic.cmx \
+ nCic2OCic.cmi
nCicLibrary.cmo: oCic2NCic.cmi nUri.cmi nCic2OCic.cmi nCicLibrary.cmi
nCicLibrary.cmx: oCic2NCic.cmx nUri.cmx nCic2OCic.cmx nCicLibrary.cmi
nCicEnvironment.cmo: nUri.cmi nReference.cmi nCicLibrary.cmi nCic.cmo \
Sophia-Antipolis/geometry: vecchio nucleo troppo lento
Rocq/ALGEBRA/CATEGORY_THEORY: vecchio nucleo troppo lento
-Sophia-Antipolis/Algebra: nuovo nucleo diverge
- cic:/Sophia-Antipolis/Algebra/Sub_module/submodule_op.con
-Sophia-Antipolis/Buchberger: nuovo nucleo diverge
- cic:/Sophia-Antipolis/Buchberger/BuchRed/redbuch_stable.con
+## = diventato addirittura velocissimo dopo universi + proof irrelevance + altezze
+##Sophia-Antipolis/Algebra: nuovo nucleo diverge
+## cic:/Sophia-Antipolis/Algebra/Sub_module/submodule_op.con
+##Sophia-Antipolis/Buchberger: nuovo nucleo diverge
+## cic:/Sophia-Antipolis/Buchberger/BuchRed/redbuch_stable.con
matita/freescale: nuovo nucleo molto piu' lento del vecchio?
lannion: nuovo nucleo impredicative set
(* $Id$ *)
let debug = true
-let ignore_exc = false
+let ignore_exc = true
let rank_all_dependencies = false
let trust_environment = false
type universe = (bool * NUri.uri) list
(* Max of non-empty list of named universes, or their successor (when true) *)
-type sort = Prop | Type of universe | CProp
+type sort = Prop | Type of universe
type implicit_annotation = [ `Closed | `Type | `Hole | `Term ]
let ouri_of_reference (NReference.Ref (u,_)) = ouri_of_nuri u;;
+let cprop = [false, NUri.uri_of_string ("cic:/matita/pts/CProp.univ")];;
+
let nn_2_on = function
| "_" -> Cic.Anonymous
| s -> Cic.Name s
| NCic.LetIn (n,ty_s,s,t) ->
Cic.LetIn (nn_2_on n,convert_term k s,convert_term k ty_s, convert_term (k+1) t)
| NCic.Sort NCic.Prop -> Cic.Sort Cic.Prop
- | NCic.Sort NCic.CProp -> Cic.Sort Cic.CProp
+ | NCic.Sort (NCic.Type u) when
+ (* BUG HERE: I should use NCicEnvironment.universe_eq, but I do not
+ want to add this recursion between the modules *)
+ (*NCicEnvironment.universe_eq*) u=cprop -> Cic.Sort Cic.CProp
| NCic.Sort (NCic.Type _) -> Cic.Sort (Cic.Type (CicUniv.fresh ()))
| NCic.Implicit _ -> assert false
| NCic.Const (NReference.Ref (u,NReference.Ind (_,i,_))) ->
exception BadDependency of string Lazy.t;;
exception BadConstraint of string Lazy.t;;
-let type0 = [false, NUri.uri_of_string ("cic:/matita/pts/Type.univ")]
+let type0 = []
+let cprop = [false, NUri.uri_of_string ("cic:/matita/pts/CProp.univ")]
let le_constraints = ref [] (* strict,a,b *)
val get_relevance: NReference.reference -> bool list
val type0: NCic.universe
+val cprop: NCic.universe
(* universe_* raise BadConstraints if the second arg. is an inferred universe *)
val universe_eq: NCic.universe -> NCic.universe -> bool
val universe_leq: NCic.universe -> NCic.universe -> bool
| C.Implicit _ -> F.fprintf f "?"
| C.Meta (n,_) -> F.fprintf f "?%d" n
| C.Sort C.Prop -> F.fprintf f "Prop"
- | C.Sort C.CProp -> F.fprintf f "CProp"
| C.Sort (C.Type []) -> F.fprintf f "IllFormedUniverse"
| C.Sort (C.Type [false, u]) -> F.fprintf f "%s" (NUri.name_of_uri u)
| C.Sort (C.Type [true, u]) -> F.fprintf f "S(%s)" (NUri.name_of_uri u)
| C.Sort s1, C.Sort C.Prop -> t2
| C.Sort (C.Type u1), C.Sort (C.Type u2) -> C.Sort (C.Type (u1@u2))
| C.Sort _,C.Sort (C.Type _) -> t2
- | C.Sort (C.Type _) , C.Sort C.CProp -> t1
- | C.Sort _, C.Sort C.CProp
| C.Meta (_,(_,(C.Irl 0 | C.Ctx []))), C.Sort _
| C.Meta (_,(_,(C.Irl 0 | C.Ctx []))), C.Meta (_,(_,(C.Irl 0 | C.Ctx [])))
| C.Sort _, C.Meta (_,(_,(C.Irl 0 | C.Ctx []))) -> t2
(PP.ppterm ~subst ~metasenv ~context so)
)));
(match arity1, R.whd ~subst ((name,C.Decl so)::context) ta with
- | (C.Sort (C.CProp | C.Type _), C.Sort _)
+ | (C.Sort C.Type _, C.Sort _)
| (C.Sort C.Prop, C.Sort C.Prop) -> ()
- | (C.Sort C.Prop, C.Sort (C.CProp | C.Type _)) ->
+ | (C.Sort C.Prop, C.Sort C.Type _) ->
(* TODO: we should pass all these parameters since we
* have them already *)
let inductive,leftno,itl,_,i = E.get_checked_indtys r in
" of the constructor is not included in the inductive" ^
" type sort " ^ PP.ppterm ~metasenv ~subst ~context s2)))
| C.Sort _, C.Sort C.Prop
- | C.Sort C.CProp, C.Sort C.CProp
| C.Sort _, C.Sort C.Type _ -> ()
| _, _ ->
raise
[false, NUri.uri_of_string ("cic:/matita/pts/Type"^string_of_int n^".univ")]
;;
+let cprop = [false, NUri.uri_of_string ("cic:/matita/pts/CProp.univ")];;
+
(* porcatissima *)
type reference = Ref of NUri.uri * NReference.spec
let reference_of_ouri u indinfo =
let ty, fixpoints_ty = aux k octx ctx n_fix uri ty in
NCic.LetIn ("cast", ty, t, NCic.Rel 1), fixpoints_t @ fixpoints_ty
| Cic.Sort Cic.Prop -> NCic.Sort NCic.Prop,[]
- | Cic.Sort Cic.CProp -> NCic.Sort NCic.CProp,[]
+ | Cic.Sort Cic.CProp -> NCic.Sort (NCic.Type cprop),[]
| Cic.Sort (Cic.Type u) ->
NCic.Sort (NCic.Type (mk_type (CicUniv.get_rank u))),[]
| Cic.Sort Cic.Set -> NCic.Sort (NCic.Type (mk_type 0)),[]