Raw File
mochi-repeat-add.hs
assert :: {v:Bool | v == True} -> Bool
assert = \x -> True

add :: x:Int -> y:Int -> {v:Int | v = x + y}
add = \ x1 x2 -> x1 + x2

repeat :: n:Int ~> (m:Int -> {v:Int| n = v - m}) -> k:{v:Int | 0 <= v} -> {v:Int | v == 0} -> {v:Int | v = k * n}
repeat = \f k x -> if k <= 0 then x else f (repeat f (k - 1) x)

-- main :: Int -> Int -> Bool
-- main = \ n k ->
--   if (0 <= n) /\ (k > 0) then assert (n <= repeat (add n) k 0) else True
back to top