Export to GitHub

agda - issue #42

Interleaving type checking and termination checking


Posted on Dec 17, 2007 by Happy Lion

What steps will reproduce the problem? 1. Define this module:

module bug where A : Set A = A -- non-terminating definition should give an error, not a loop q : A q = ? -- including this definition makes agda loop

  1. run agda bug.agda

What is the expected output? What do you see instead?

An error like "bug.A does NOT pass the termination check". Instead, agda loops.

What version of the product are you using? On what operating system?

Agda 2 version 2.1.3 compiled from darcs repo 071212 or so.

Please provide any additional information below.

The emacs mode gets confused when agda does not respond. Ctrl-g gives back the cursor, but the process is still tied up in the background.

/Patrik

Comment #1

Posted on Jan 23, 2008 by Grumpy Panda

(No comment was entered for this change.)

Comment #2

Posted on Jun 11, 2008 by Grumpy Panda

(No comment was entered for this change.)

Comment #3

Posted on Feb 1, 2009 by Quick Monkey

The emacs mode gets confused when agda does not respond. Ctrl-g gives back the cursor, but the process is still tied up in the background.

Nowadays you can restart the process by invoking agda2-restart (C-c C-x C-r).

Comment #4

Posted on Sep 25, 2009 by Quick Monkey

Issue 201 has been merged into this issue.

Comment #5

Posted on Dec 30, 2010 by Quick Monkey

Issue 371 has been merged into this issue.

Comment #6

Posted on Jan 21, 2011 by Grumpy Panda

Issue 379 has been merged into this issue.

Comment #7

Posted on Feb 11, 2011 by Quick Monkey

Issue 385 has been merged into this issue.

Comment #8

Posted on May 21, 2012 by Grumpy Panda

Issue 653 has been merged into this issue.

Comment #9

Posted on Feb 27, 2013 by Quick Monkey

Issue 801 has been merged into this issue.

Comment #10

Posted on Nov 9, 2013 by Grumpy Panda

This was fixed by Andreas in February.

Comment #11

Posted on Nov 11, 2013 by Quick Monkey

Andreas has recently added another mechanism that can be used to trigger non-termination:

p : Σ ℕ λ n → n ≡ 0 proj₁ p = proj₁ p proj₂ p = refl

Mutual blocks can also be used:

mutual

Foo : Set
Foo = Foo

foo : Foo
foo = foo

Status: Accepted

Labels:
Type-Enhancement Priority-Low