swh:1:snp:aeaf3dbb58f5be84b565e73b5ade1503ee8cb6d6
Raw File
Tip revision: b6407e0f026cf5491ca5ed0a35ea5cf316ebe8ca authored by Anish Tondwalkar on 21 May 2021, 03:15:25 UTC
formatted for submission
Tip revision: b6407e0
mochi-d2.hs
assume as b:Bool -> {v:Int | b == True}
assume = 0

assert as {b:Bool | b == True} -> Int
assert = 0

bool as Bool
bool = 0

app :: n:Int ~> (x:{u:Int | n <= u} -> Int) -> {u:Int | n <= u} -> Int
app = \f x -> if bool then app f (x + 1) else f x

check :: x:Int -> {u:Int | x <= u} -> Int
check = \x y -> if x <= y then 1 else assert False

main :: Int -> Int
main = \i -> app (check i) i
back to top