Hi Scott,
This error has to do with proving that `pingVia` terminates.
To do so, by default LH uses the first parameter for which
it has a "termination metric", and puts in a proof obligation
that at the recursive call, the parameter passed in is:
(1) smaller than the current parameter,
(2) lower bounded by 0.
In this example,
it uses the first `Int` as such a parameter (namely `rt`) and hence,
tries to prove that at the recursive call, the (recursive) parameter is
(1) v < rt "less than the current parameter"
(2) 0 <= v "lower bounded by 0"
Of course, in this case, this is the WRONG thing to prove, because the
"correct" termination metric is the *second* parameter, namely `count`.
To tell LH to use `count` (instead of the default), use the
following type signature:
{-@ pingVia :: Int -> count:Int -> T.Text -> IO Bool / [count] @-}
Or, alternately, if you prefer, disable termination checking with:
{-@ LIQUID "--no-termination" @-}
Can you let us know if that works?
Thanks!
Ranjit.
@Niki : I thought you had changed things so this was marked as a "Termination Error"?)