agda / agda2hs

Compiling Agda code to readable Haskell

Home Page:https://agda.github.io/agda2hs

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`agda2hs` fails unless `agda` or `agda2hs` is run first

bwbush opened this issue · comments

The first execution of agda2hs fails for this code:

$ find -type f -name \*.agdai -delete

$ agda2hs --local-interfaces --library-file=$AGDA_LIBS --compile-dir=peras-hs/src src/Peras/QCD/Node/Specification.agda

agda2hs --local-interfaces --library-file=$AGDA_LIBS --compile-dir=peras-hs/src src/Peras/QCD/Node/Specification.agda
Checking Peras.QCD.Node.Specification (/extra/iohk/peras-design.msd/src/Peras/QCD/Node/Specification.agda).
 Checking Peras.QCD.Crypto (/extra/iohk/peras-design.msd/src/Peras/QCD/Crypto.agda).
 Checking Peras.QCD.Crypto.Placeholders (/extra/iohk/peras-design.msd/src/Peras/QCD/Crypto/Placeholders.agda).
  Checking Peras.QCD.Types (/extra/iohk/peras-design.msd/src/Peras/QCD/Types.agda).
   Checking Peras.QCD.Protocol (/extra/iohk/peras-design.msd/src/Peras/QCD/Protocol.agda).
  Checking Peras.QCD.Types.Instances (/extra/iohk/peras-design.msd/src/Peras/QCD/Types/Instances.agda).
   Checking Peras.QCD.Util (/extra/iohk/peras-design.msd/src/Peras/QCD/Util.agda).
 Checking Peras.QCD.Node.Model (/extra/iohk/peras-design.msd/src/Peras/QCD/Node/Model.agda).
  Checking Peras.QCD.State (/extra/iohk/peras-design.msd/src/Peras/QCD/State.agda).
 Checking Peras.QCD.Node.Preagreement (/extra/iohk/peras-design.msd/src/Peras/QCD/Node/Preagreement.agda).
/extra/iohk/peras-design.msd/src/Peras/QCD/Node/Specification.agda:233,29-235,93
illegal instance:  iHashEq

$ agda2hs --local-interfaces --library-file=$AGDA_LIBS --compile-dir=peras-hs/src src/Peras/QCD/Node/Specification.agda

Success also occurs if agda is run and then agda2hs is run:

$ find -type f -name \*.agdai -delete

$ agda --local-interfaces --library-file=$AGDA_LIBS --compile-dir=peras-hs/src src/Peras/QCD/Node/Specification.agda

Checking Peras.QCD.Node.Specification (/extra/iohk/peras-design.msd/src/Peras/QCD/Node/Specification.agda).
 Checking Peras.QCD.Crypto (/extra/iohk/peras-design.msd/src/Peras/QCD/Crypto.agda).
 Checking Peras.QCD.Crypto.Placeholders (/extra/iohk/peras-design.msd/src/Peras/QCD/Crypto/Placeholders.agda).
  Checking Peras.QCD.Types (/extra/iohk/peras-design.msd/src/Peras/QCD/Types.agda).
   Checking Peras.QCD.Protocol (/extra/iohk/peras-design.msd/src/Peras/QCD/Protocol.agda).
  Checking Peras.QCD.Types.Instances (/extra/iohk/peras-design.msd/src/Peras/QCD/Types/Instances.agda).
   Checking Peras.QCD.Util (/extra/iohk/peras-design.msd/src/Peras/QCD/Util.agda).
 Checking Peras.QCD.Node.Model (/extra/iohk/peras-design.msd/src/Peras/QCD/Node/Model.agda).
  Checking Peras.QCD.State (/extra/iohk/peras-design.msd/src/Peras/QCD/State.agda).
 Checking Peras.QCD.Node.Preagreement (/extra/iohk/peras-design.msd/src/Peras/QCD/Node/Preagreement.agda).

$ agda2hs --local-interfaces --library-file=$AGDA_LIBS --compile-dir=peras-hs/src src/Peras/QCD/Node/Specification.agda

This sounds like an upstream issue in Agda rather than a bug in agda2hs itself. Perhaps it could be fixed by agda/agda#7251?

@bwbush Could you provide a minimized reproducer for this issue? Otherwise it is not really possible to look deeper into it.

Alternatively, you could try to use a patched version of agda2hs that includes the patch to base agda I mentioned above.