[Agda] redefining a value for `with'

Sergei Meshveliani mechvel at botik.ru
Sat Jul 28 14:31:14 CEST 2018


Dear all,

The proof for  ineq  below uses the witness  leq  in the line (II).
And Agda2.5.4  reports that  leq  in the line (II) has not the needed
type.
Then, I add a parasitic definition  leq'  in the line (I), 
and replace leq with leq' in the line (II).
And this latter program is type-checked.

----------------------------------------------------------
  aux :  ∀ a cnt → log' a ≤' cnt → Foo 
  ...
  aux (suc2* a) (1+ cnt) leq =  foo
    where
    a' = suc2* a

    leq' :  log' a' ≤' 1+ cnt
    leq'  = leq                    -- (I)

    ineq :  log' a ≤' cnt
    ineq with a ≟ 0#
    ... | yes a≡0 =  ...
    ... | no a≢0  =
          ≤'begin log' a             ≡≤'[ refl ]
                  ... 
                  pred' (log' a')     ≤'[ NatP.pred-mono leq ]   -- (II)
                                                      -- leq'
                  pred' (1+ cnt)     ≡≤'[ refl ]
                  cnt
          ≤'end
-----------------------------------------------------


1) Is this a bug in Agda?
2) I wonder how to avoid this parasitic definition of leq'.

I could reduce the example to a self-contained one, but I do not know,
may be you can tell of it as it is.

Thanks,

------
Sergei 



More information about the Agda mailing list