factorial :: Def ('[Sint32] :-> Sint32)
factorial  = proc "factorial" $ \ n -> 
  requires (n >=? 1) $
  ensures  (>=? n) $
  body $
  ifte_ (n >? 1)
   (do n' <- call factorial (n - 1)
       ret (n' * n)
   )
   (do ret n)
factorial :: Def ('[Sint32] :-> Sint32)
factorial  = proc "factorial" $ \ n -> 
  requires (n >=? 1) $
  ensures  (>=? n) $
  body $
  ifte_ (n >? 1)
   (do n' <- call factorial (n - 1)
       ret (n' * n)
   )
   (do ret n)
factorial  = proc "factorial" $ \ n -> 
  requires (n >=? 1) $
  ensures  (>=? n) $
  body $
  ifte_ (n >? 1)
   (do n' <- call factorial (n - 1)
       ret (n' * n)
   )
   (do ret n)