Enforce that polymorphic definitions do not generate internal constraints.
Enforce that polymorphic definitions do not generate internal constraints.

In practice, we only send to the kernel polymorphic definitions whose
side-effects have been exported first, and furthermore their bodies have
already been forced. Therefore, no constraints are generated by the kernel.

Nonetheless, it might be desirable in the future to also defer computation
of polymorphic proofs whose constraints have been explicited in the type.
It is not clear when this is going to be implemented. Nonetheless, the
current check is not too drastic as it only prevents monomorphic side-effects
to appear inside polymorphic opaque definitions. The only way I know of to
trigger such a situation is to generate a scheme in a proof, as even abstract
is actually preserving the polymorphism status of the surrounding proof. It
would be possible to work around such rare instances anyways.

As for internal constraints generated by a potentially deferred polymorphic
body, it is easy to check that they are a subset of the exported ones at a
higher level inside the future computation and fail there.

So in practice this patch is not too restrictive and it highlights a rather
strong invariant of the kernel code.

ppedrot/coq,letouzey/coq-wip,maximedenes/coq,SkySkimmer/coq,maximedenes/coq,SkySkimmer/coq,SkySkimmer/coq,SkySkimmer/coq,maximedenes/coq,silene/coq,letouzey/coq-wip,Zimmi48/coq,Matafou/coq,coq/coq,Matafou/coq,letouzey/coq-wip,JasonGross/coq,Zimmi48/coq,JasonGross/coq,JasonGross/coq,letouzey/coq-wip,ejgallego/coq,Matafou/coq,letouzey/coq-wip,maximedenes/coq,gares/coq,Zimmi48/coq,JasonGross/coq,coq/coq,ejgallego/coq,Zimmi48/coq,silene/coq,coq/coq,silene/coq,gares/coq,ejgallego/coq,coq/coq,maximedenes/coq,gares/coq,ppedrot/coq,ppedrot/coq,ppedrot/coq,gares/coq,gares/coq,ejgallego/coq,ppedrot/coq