-
Notifications
You must be signed in to change notification settings - Fork 378
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
total Omega : ⊥ #1988
Comments
In fact, the following simpler program suffers from the same issue: data D : Type where Abs : (D -> Void) -> D
app : D -> D -> Void
app (Abs f) d = f d
omega : D
omega = Abs (\x => app x x)
total
Omega : Void
Omega = app omega omega |
That last one is properly rejected if you use The totality checker somehow forgets to check that |
In Agda, this piece of code is rejected because the universe of the type of the constructor |
This appears to be fixed now, presumably thanks to PR#3108 or similar. Closes idris-lang#1988
still causes problems |
This data is incorrect if there are levels of universes. But in Agda it is also rejected by the positivity checker. |
Another example with incorrect positivity checking. In this example there are no problems with levels of universes. But %default total
T : Type -> Type
T a = a -> Void
data D : Type
0 T' : () -> Type
T' () = T D
data D : Type where
Abs : {default () x : ()} -> T' x -> D
app : D -> D -> Void
app $ Abs {x=()} f = f
omega : D
omega = Abs $ \x => app x x
boom : Void
boom = app omega omega |
While trying to understand the differences between Agda's and Idris's positivity checkers, I came across Andreas Abel's message from 2012, which passes the totality checker when translated to Idris:
The text was updated successfully, but these errors were encountered: