How does time/space complexity work with lisp
You get the fib(n) running time if you only expand one invocation of fib at a time. You haven't been told the exact execution model for several reasons:


It is messy.
It's not important.
It could depend on the implementation.
You need to worry about low-level stuff such as the complexity of integer operations.


The reason it's not important is that when measuring complexity we only care about the order of growth of the number of operations. So if a certain basic operation takes 3 or 13 units of time, it makes no difference for us.