Please bear with me a moment. I am not a programer, I'm an artist, but I work with coders and this idea might be doable:
One thing I notice about working with hal is that he's doesn't think when noone talks to him. Would it be possible for him to review his own memories when he hasn't been talking to anyone. here's how I think it could be done. Please note that this may require some fuctions that don't exist, I am not as familiar with the code as I'd like to be, so I appologize in advance if I say anything dumb.
First off hal would need some sort of timer. Assuming he can use one, said timer would check to see how long it has been since someone spoke to him. after say a half hour has passed hal could call up logs of his conversations with other poeple and start reading them line by line to himself. if he's using the deductive reasoning code he may be able to learn new things from these memories by reviewing them, since he's not just hearing the users input but his own responces as well. the up shot is that it could increas his spontineity, the down side is thatit could cause him to go mad in short order (i've seen other bots go nuts from having random input)
What do you think?