[Agda] acyclicity of constructors

Conor McBride conor at strictlypositive.org
Mon Jun 30 21:51:10 CEST 2008


Hi Nisse

On 30 Jun 2008, at 14:25, Nils Anders Danielsson wrote:

> On Sun, Jun 29, 2008 at 5:15 AM, Dan Licata <drl at cs.cmu.edu> wrote:
>>
>> [What exactly does != mean here?  I'm assuming it's (the failure of)
>>  unification-modulo-definitional-equality.]
>
> Yes.
>
>> Actually, the corresponding situation for CoNat is puzzling to  
>> me.  As
>> far as I can tell, in Agda right now, you can neither prove nor  
>> refute
>> (Id n (S n)) for CoNat.
>
> You can prove it for n = omega:

[..]

> And for finite n, with
>
>   data Finite : CoNat -> Set where
>     Z : Finite Z
>     S : forall {i} (n : Finite i) -> Finite (S i)
>
> you can prove the negation.

Ah, but that's not the key question anyway, because
pattern matching relies on Ginger-unification, where
you're trying to find necessary substitutions, forced
by the equations, not Fred-unification where you're
looking for sufficient substituions to satisfy them.
Locally more pertinent is

   (n : CoNat) -> Id n (S n) -> Id n omega

which should hold observationally, but seems likely to
be another "Monster from the Id".

OK. Enough movies already.

All the best

Conor




More information about the Agda mailing list