{-!$\#$! TERMINATING !$\#$!-} whileLoop : {l : Level} {t : Set l} !$\rightarrow$! Env !$\rightarrow$! (Code : Env !$\rightarrow$! t) !$\rightarrow$! t whileLoop env next with lt 0 (varn env) whileLoop env next | false = next env whileLoop env next | true = whileLoop (record {varn = (varn env) - 1 ; vari = (vari env) + 1}) next