When you call RUN, one of two things happens: it produces a result or you die from exhaustion. If you die, you can’t act. If you get a result, you now know something about how much fuel there was before, at the cost of having used it up. The remaning fuel might be any amount in your prior, minus the amount used.
At the Scheme prompt:
(run 10000 '(equal? 'exhausted (cadr (run 1000 '((lambda (f) (f f)) (lambda (f) (f f))) (global-environment)))) global-environment)
; result: (8985 #t) ; The subrun completed and we find #t for yes, it ran to exhaustion.
(run 100 '(equal? 'exhausted (cadr (run 1000 '((lambda (f) (f f)) (lambda (f) (f f))) (global-environment)))) global-environment)
; result: (0 exhausted) ; Oops, we never got back to our EQUAL? test.
I followed Eliezer’s proposal above (both players score 0) -- that’s if you die at “top level”. If a player is simulating you and still has fuel after, then it’s told of your sub-death.
When you call RUN, one of two things happens: it produces a result or you die from exhaustion. If you die, you can’t act. If you get a result, you now know something about how much fuel there was before, at the cost of having used it up. The remaning fuel might be any amount in your prior, minus the amount used.
At the Scheme prompt:
Oh, okay, I was missing that you never run the agents as scheme, only interpret them via ev.
Are you planning on supporting a default action in case time runs out? (and if so, how will that handle the equivalent problem?)
I hadn’t considered doing that—really I just threw this together because Eliezer’s idea sounded interesting and not too hard.
I’ll at least refine the code and docs and write a few more agents, and if you have ideas I’d be happy to offer advice on implementing your variant.
If you can’t act, what happens score-wise?
I followed Eliezer’s proposal above (both players score 0) -- that’s if you die at “top level”. If a player is simulating you and still has fuel after, then it’s told of your sub-death.
You could change this in play.scm.