*)
aux test_equality_only context t1 term' ugraph
with CicUtil.Subst_not_found _ -> false,ugraph)
- | (C.Sort (C.Type t1), C.Sort (C.Type t2))
- | (C.Sort (C.CProp t1), C.Sort (C.CProp t2)) when test_equality_only ->
- (try
- true,(CicUniv.add_eq t2 t1 ugraph)
- with CicUniv.UniverseInconsistency _ -> false,ugraph)
- | (C.Sort (C.Type t1), C.Sort (C.Type t2))
- | (C.Sort (C.CProp t1), C.Sort (C.CProp t2)) ->
- (try
- true,(CicUniv.add_ge t2 t1 ugraph)
- with CicUniv.UniverseInconsistency _ -> false,ugraph)
- | (C.Sort (C.CProp t1), C.Sort (C.Type t2)) when not test_equality_only ->
- (try
- true,(CicUniv.add_gt t2 t1 ugraph)
- with CicUniv.UniverseInconsistency _ -> false,ugraph)
- | (C.Sort (C.Type t1), C.Sort (C.CProp t2)) when not test_equality_only ->
- (try
- true,(CicUniv.add_ge t2 t1 ugraph)
- with CicUniv.UniverseInconsistency _ -> false,ugraph)
+ | (C.Sort (C.CProp t1|C.Type t1), C.Sort (C.CProp t2|C.Type t2))
+ when test_equality_only ->
+ (try true,(CicUniv.add_eq t2 t1 ugraph)
+ with CicUniv.UniverseInconsistency _ -> false,ugraph)
+ | (C.Sort (C.CProp t1|C.Type t1), C.Sort (C.CProp t2|C.Type t2))
+ when not test_equality_only ->
+ (try true,(CicUniv.add_ge t2 t1 ugraph)
+ with CicUniv.UniverseInconsistency _ -> false,ugraph)
| (C.Sort s1, C.Sort (C.Type _))
| (C.Sort s1, C.Sort (C.CProp _)) -> (not test_equality_only),ugraph
| (C.Sort s1, C.Sort s2) -> (s1 = s2),ugraph
with
Cic.Sort (Cic.Type u1), Cic.Sort (Cic.Type u2)
| Cic.Sort (Cic.CProp u1), Cic.Sort (Cic.CProp u2)
- | Cic.Sort (Cic.Type u1), Cic.Sort (Cic.CProp u2) ->
- CicUniv.add_ge u2 u1 ugraph
+ | Cic.Sort (Cic.Type u1), Cic.Sort (Cic.CProp u2)
| Cic.Sort (Cic.CProp u1), Cic.Sort (Cic.Type u2) ->
- CicUniv.add_gt u2 u1 ugraph
+ CicUniv.add_ge u2 u1 ugraph
| Cic.Sort _, Cic.Sort Cic.Prop
| Cic.Sort _, Cic.Sort Cic.CProp _
| Cic.Sort _, Cic.Sort Cic.Set
| (C.Sort s1, C.Sort (C.Prop | C.Set)) ->
(* different from Coq manual!!! *)
t2',ugraph
- | (C.Sort (C.Type t1), C.Sort (C.Type t2)) ->
+ | (C.Sort (C.Type t1 | C.CProp t1), C.Sort (C.Type t2)) ->
let t' = CicUniv.fresh() in
(try
let ugraph1 = CicUniv.add_ge t' t1 ugraph in
C.Sort (C.Type t'),ugraph2
with
CicUniv.UniverseInconsistency msg -> raise (TypeCheckerFailure msg))
- | (C.Sort (C.CProp t1), C.Sort (C.CProp t2)) ->
+ | (C.Sort (C.CProp t1 | C.Type t1), C.Sort (C.CProp t2)) ->
let t' = CicUniv.fresh() in
(try
let ugraph1 = CicUniv.add_ge t' t1 ugraph in
C.Sort (C.CProp t'),ugraph2
with
CicUniv.UniverseInconsistency msg -> raise (TypeCheckerFailure msg))
- | (C.Sort (C.Type t1), C.Sort (C.CProp t2)) ->
- let t' = CicUniv.fresh() in
- (try
- let ugraph1 = CicUniv.add_ge t' t1 ugraph in
- let ugraph2 = CicUniv.add_ge t' t2 ugraph1 in
- C.Sort (C.CProp t'),ugraph2
- with
- CicUniv.UniverseInconsistency msg -> raise (TypeCheckerFailure msg))
- | (C.Sort (C.CProp t1), C.Sort (C.Type t2)) ->
- let t' = CicUniv.fresh() in
- (try
- let ugraph1 = CicUniv.add_gt t' t1 ugraph in
- let ugraph2 = CicUniv.add_ge t' t2 ugraph1 in
- C.Sort (C.Type t'),ugraph2
- with
- CicUniv.UniverseInconsistency msg -> raise (TypeCheckerFailure msg))
| (C.Sort _,C.Sort (C.Type t1)) -> C.Sort (C.Type t1),ugraph
| (C.Sort _,C.Sort (C.CProp t1)) -> C.Sort (C.CProp t1),ugraph
| (C.Meta _, C.Sort _) -> t2',ugraph
| (C.Sort (C.CProp t1), C.Sort (C.Type t2)) ->
let t' = CicUniv.fresh() in
(try
- let ugraph1 = CicUniv.add_gt t' t1 ugraph in
+ let ugraph1 = CicUniv.add_ge t' t1 ugraph in
let ugraph2 = CicUniv.add_ge t' t2 ugraph1 in
C.Sort (C.Type t'),subst,metasenv,ugraph2
with
| a::(b::_ as tl) ->
NCicEnvironment.add_constraint true (mk_type a) (mk_type b);
NCicEnvironment.add_constraint true (mk_cprop a) (mk_cprop b);
- NCicEnvironment.add_constraint true (mk_type a) (mk_cprop a);
NCicEnvironment.add_constraint true (mk_cprop a) (mk_type b);
+ NCicEnvironment.add_constraint true (mk_type a) (mk_cprop b);
+ NCicEnvironment.add_constraint false (mk_cprop a) (mk_type a);
+ NCicEnvironment.add_constraint false (mk_type a) (mk_cprop a);
aux tl
| [a] ->
- NCicEnvironment.add_constraint true (mk_type a) (mk_cprop a);
+ NCicEnvironment.add_constraint false (mk_type a) (mk_cprop a);
+ NCicEnvironment.add_constraint false (mk_cprop a) (mk_type a);
| _ -> ()
in
aux lll
let uu= OCic2NCic.nuri_of_ouri uu in
indent := 0;
let o = NCicLibrary.get_obj uu in
-(* prerr_endline (NCicPp.ppobj o); *)
+ prerr_endline (NCicPp.ppobj o);
try
NCicTypeChecker.typecheck_obj o
with