Coq is a formal proof management system. It provides a formal language to write mathematical definitions, executable algorithms and theorems together with an environment for semi-interactive development of machine-checked proofs.
Structure type : Type := Pack { ob : Type }.
Polymorphic Record category := { foo : Type }.
Definition FuncComp := Pack category.
Axiom C : category.
Check (C : ob FuncComp). (* OK *)
Canonical Structure FuncComp.
Fail Check (C : ob FuncComp). (* Fails *)
Removing the Polymorphic from Record makes both Checks go through.
Reported at https://coq.inria.fr/bugs/show_bug.cgi?id=3230 by Rob Dockins, trimmed by coq-bug-finder.
Removing the
Polymorphic
fromRecord
makes bothCheck
s go through.