Yes, homework indeed. I'm in college, studying computer science, so someone was bound to teach us Lisp too at some point
Anyway, I actually turned it in earlier today and it turned out ok. I used two functions that called each other, one to prove a rule, the other to "prove" (not the best term, but it'll have to do) a fact, by proving one of the rules defining that fact, and so on until I had only proven facts left in the "pending" stack. I got 95% because in some situations it didn't handle cyclic rules so well (such as '((a then b) (b then c) (c then a)), for example). I can post the code, if you like, but I've got tons of other assignments coming up, so I probably won't be debugging this any longer, now that I've turned it in.
Anyway, thanks for the help!