From 784d82dc1a709c4c262665a4cd4eb0b1bd1487a0 Mon Sep 17 00:00:00 2001 From: Matthieu Sozeau Date: Mon, 13 Jun 2016 18:36:58 +0200 Subject: Univs: fix for part #2 of bug #4816. Check that the polymorphic status of everything that is parameterized in nested sections is coherent. --- library/lib.ml | 2 +- test-suite/bugs/closed/4816.v | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 test-suite/bugs/closed/4816.v diff --git a/library/lib.ml b/library/lib.ml index e4617cafb6..f6b4a2458b 100644 --- a/library/lib.ml +++ b/library/lib.ml @@ -417,7 +417,7 @@ let add_section_variable id impl poly ctx = match !sectab with | [] -> () (* because (Co-)Fixpoint temporarily uses local vars *) | (vars,repl,abs)::sl -> - check_same_poly poly vars; + List.iter (fun tab -> check_same_poly poly (pi1 tab)) !sectab; sectab := (Variable (id,impl,poly,ctx)::vars,repl,abs)::sl let add_section_context ctx = diff --git a/test-suite/bugs/closed/4816.v b/test-suite/bugs/closed/4816.v new file mode 100644 index 0000000000..ef79b9869b --- /dev/null +++ b/test-suite/bugs/closed/4816.v @@ -0,0 +1,18 @@ +Section foo. +Polymorphic Universes A B. +Constraint A <= B. +End foo. +(* gives an anomaly Universe undefined *) + +or even, a refinement of #4503: +Require Coq.Classes.RelationClasses. + +Class PreOrder (A : Type) (r : A -> A -> Type) : Type := +{ refl : forall x, r x x }. + +Section foo. + Polymorphic Universes A. + Section bar. + Context {A : Type@{A}} {rA : A -> A -> Prop} {PO : PreOrder A rA}. + End bar. +End foo. \ No newline at end of file -- cgit v1.2.3