[Agda] Agda mysteriously hangs

Andreas Abel andreas.abel at ifi.lmu.de
Fri Aug 13 17:04:00 CEST 2010


Hi Josh,

strange indeed.  I ran through you file DTerm.agda with --no- 
termination-check and dummy commented out.  With verbosity 7 (-v 7),  
Agda seems to hang after outputting

Building interface...
   instantiating all meta variables
   interface complete

Looking at the code

   Interaction/Imports.hs , end of function createInterface

I see

     if and [ null termErrs, null unsolvedMetas, null  
unsolvedConstraints ]
      then do
       -- The file was successfully type-checked (and no warnings were
       -- encountered), so the interface should be written out.
       t <- writeInterface (filePath $ toIFile file) i
       return (i, Right t)

so it is likely that "writeInterface", which is not called if there  
were termination errors or unsolved goals, takes either insanely long  
or loops.

Btw., I realized that already type and termination checking take long  
for DTerm since function "abs" has lots of auxiliary functions  
generated by with, rewrite, and \sharp.

Please try to reproduce the behavior with a smaller example (best:  
minimal example) and submit it as an issue to our bugtracker at  
code.google.com.

Cheers,
Andreas

On Aug 11, 2010, at 11:29 AM, Josh Ko wrote:

> Hi,
>
> We have been working on encoding concurrent processes with simple
> session types in Agda, and come up with a datatype for coinductive
> process terms, which is heavily indexed with typing contexts. We
> have followed the locally nameless approach [1], which means there
> are both free and bound channels, represented by strings and (safe)
> de Bruijn indices respectively. One key operation is abstracting
> a free channel to a bound channel, whose implementation requires
> a lot of typecasts (rewrites) all through the code and is hard to
> be put into a form of guarded recursion (our process terms are
> coinductive). We decided to turn off the termination checker at
> least for the moment, so we can carry on to some other proofs.
> The strange thing is: if we do not add
>
>  {-# OPTIONS --no-termination-check #-}
>
> at the top of the file, then the typechecker stops and the function
> is highlighted as non-terminating, which is expected. If the option
> is turned on, however, the typechecker just hangs. Now if one leaves
> any hole in the file (with the option still turned on), say appending
>
>  dummy : ℕ
>  dummy = {!!}
>
> at the end, then the typechecker stops again. Is there an explanation
> for this phenomenon? I have put the relevant files at
>
>  http://w.csie.org/~b94087/EvenMoreHeavilyIndexedSyntaxRevisited/
>
> and the problematic function is called abs in the file DTerm.agda,
> which can take a long time to load even if the --no-termination-check
> option is off or a hole is left. The version of Agda is the most
> recent development version pulled from the darcs repository.
>
> Thanks!
>
> -- JK
>
>
> [1] Aydemir et al. Engineering Formal Metatheory. POPL '08.
>    http://doi.acm.org/10.1145/1328438.1328443_______________________________________________
> Agda mailing list
> Agda at lists.chalmers.se
> https://lists.chalmers.se/mailman/listinfo/agda
>

Andreas Abel  <><      Du bist der geliebte Mensch.

Theoretical Computer Science, University of Munich
Oettingenstr. 67, D-80538 Munich, GERMANY

andreas.abel at ifi.lmu.de
http://www2.tcs.ifi.lmu.de/~abel/





More information about the Agda mailing list