[Agda] termination with `where'

Sergei Meshveliani mechvel at botik.ru
Fri Jun 2 21:16:38 CEST 2017


Dear Agda developers,

For a certain fragment of 

  f : (u v : Expression) -> foo u v ≈ foo' u v
  f (x :+ y) (e :* e') =
    begin
     ...    ≈[ +cong (aux x z)
                     (aux y z)   -- (I) 
             ]
     ...  
    ∎
    where z = e :* e'

Agda 2.6.0-207bde6  reports  "Termination checking failed ...", 
and marks yellow the call  (aux y z).

Replacing  (aux y z)  with   (aux y (e :* e'))  
satisfies the type checker.
Here  x, y, e, e'  are terms constructed with certain data
constructors  :0, :1, gen, _:+_, _:*_.

It looks strange that the termination checker is not stable under the
`where' construct.

What people think of this?

Regards,

------
Sergei



More information about the Agda mailing list