initialise-binding initialise-storing initialise-giving finalise-failing finalise-throwing scope (collateral (bind ("fib_aux", allocate-variable (functions (tuples ((values)*), values))), bind ("fib", allocate-variable (functions (tuples ((values)*), values))), bind ("main", allocate-variable (functions (tuples ((values)*), values)))), sequential (assign (bound ("fib_aux"), function closure (scope (match (given, tuple (pattern closure (bind ("i", allocate-initialised-variable (values, given))), pattern closure (bind ("m", allocate-initialised-variable (values, given))), pattern closure (bind ("n", allocate-initialised-variable (values, given))))), handle-return (if-else (is-equal (assigned (bound ("i")), decimal-natural ("1")), return (assigned (bound ("n"))), return (apply (assigned (bound ("fib_aux")), tuple (integer-subtract (assigned (bound ("i")), decimal-natural ("1")), assigned (bound ("n")), integer-add (assigned (bound ("m")), assigned (bound ("n"))))))))))), assign (bound ("fib"), function closure (scope (match (given, tuple (pattern closure (bind ("n", allocate-initialised-variable (values, given))))), handle-return (if-else (is-equal (assigned (bound ("n")), decimal-natural ("0")), return (decimal-natural ("0")), return (apply (assigned (bound ("fib_aux")), tuple (assigned (bound ("n")), decimal-natural ("0"), decimal-natural ("1"))))))))), assign (bound ("main"), function closure (scope (match (given, tuple ()), handle-return (scope (bind ("i", allocate-initialised-variable (values, decimal-natural ("1"))), while (is-less (assigned (bound ("i")), decimal-natural ("8")), sequential (print (apply (assigned (bound ("fib")), tuple (assigned (bound ("i"))))), effect (give (bound ("i"), sequential (assign (given, integer-add (assigned (given), 1)), assigned (given))))))))))), apply (assigned (bound ("main")), tuple ())))