Subject: Ssreflect Users Discussion List
List archive
- From: Enrico Tassi <>
- To:
- Subject: Re: [ssreflect] Coqchk output
- Date: Wed, 4 May 2016 16:40:23 +0200
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None ; spf=None ; spf=None
- Ironport-phdr: 9a23:T9KcYBN5HiNQmUpTd6kl6mtUPXoX/o7sNwtQ0KIMzox0KPjzrarrMEGX3/hxlliBBdydsKIVzbKM+PC7EUU7or+/81k6OKRWUBEEjchE1ycBO+WiTXPBEfjxciYhF95DXlI2t1uyMExSBdqsLwaK+i760zceF13FOBZvIaytQ8iJ35Xxj7r5q8abSj4LrQT+SIs6FA+xowTVu5teqqpZAYF19CH0pGBVcf9d32JiKAHbtR/94sCt4MwrqHwI6Lpyv/JHBL7hZak2SbFTEBwjKHpw5cvxtBCFTA2V53JaXH9FvABPBl3o6gv7VZC5jiLhres1jCScJ8z9SvYoUC+57o9qTgXpgWEJLWhqoynslsVsgfcD81qarBtlztuMbQ==
On Wed, May 04, 2016 at 11:43:59AM +0200, Felipe Cerqueira wrote:
> Hi everyone,
>
> I have a simple question about the coqchk output when importing ssreflect.
> It seems to contain many Axioms from module types:
>
> |CONTEXT SUMMARY =============== * Theory: Set is predicative * Axioms:
> Ssreflect.fintype.SubsetDef.subsetEdef Ssreflect.fintype.SubsetDef.subset
> MathComp.tuple.FinTuple.size_enum MathComp.finfun.FunFinfun.fun_of_finE
> MathComp.finfun.FunFinfun.fun_of_fin MathComp.finfun.FunFinfun.finfunE
> MathComp.finfun.FunFinfun.finfun MathComp.tuple.FinTuple.enumP
> Ssreflect.fintype.Finite.EnumDef.enumDef MathComp.tuple.FinTuple.enum
> Ssreflect.fintype.Finite.EnumDef.enum Ssreflect.fintype.CardDef.cardEdef
> Ssreflect.fintype.CardDef.card MathComp.bigop.BigOp.bigopE
> MathComp.bigop.BigOp.bigop |
If you look at the files, all these "axioms" look like
Module Type EnumSig.
Parameter enum : ∀ cT : type, seq cT.
Axiom enumDef : enum = fun cT ⇒ mixin_enum (class cT).
End EnumSig.
Module EnumDef : EnumSig.
Definition enum cT := mixin_enum (class cT).
Definition enumDef := erefl enum.
End EnumDef.
This trick hides a program's body behind a name and an unfolding equation
(enum
and enumDef respectively). The program is there, and the equation is proved
by
reflexivity.
This way of doing things works around performance issues: Coq never
unfolds "enum" automatically, but you can rewrite with the equation in
the middle of a proof to unravel the body of enum.
All in all, enum and enumDef are not Axioms even if they "do not compute".
Coqchk does not understand it. I thought it was fixed in 8.5, but I guess I'm
wrong.
Best,
--
Enrico Tassi
- [ssreflect] Coqchk output, Felipe Cerqueira, 05/04/2016
- Re: [ssreflect] Coqchk output, Enrico Tassi, 05/04/2016
- Re: [ssreflect] Coqchk output, Felipe Cerqueira, 05/04/2016
- Re: [ssreflect] Coqchk output, Felipe Cerqueira, 05/05/2016
- Re: [ssreflect] Coqchk output, Felipe Cerqueira, 05/04/2016
- Re: [ssreflect] Coqchk output, Enrico Tassi, 05/04/2016
Archive powered by MHonArc 2.6.18.