Problem Set 3 In problem-set-1-answers.lisp you will find the definitions (defun len (x) (if (endp x) 0 (+ 1 (len (cdr x))))) (defun app (x y) (if (endp x) y (cons (car x) (app (cdr x) y)))) (defun rev (x) (if (endp x) nil (app (rev (cdr x)) (cons (car x) nil)))) (defun member (e list) (if (endp list) nil (if (equal e (car list)) t (member e (cdr list))))) (defun repeat (th n) (if (zp n) nil (cons th (repeat th (- n 1))))) In addition, you have seen the definition of the M1 run function: (defun run (sched s) (if (endp sched) s (run (cdr sched) (step s)))) For this problem set, you need not think about the definition of step. Just imagine there is a one argument function named step. Prove the following theorems. I do not want mechanical proofs, but conventional ``hand proofs.'' Remember that you can assume as additional axioms anything that is true of the arithmetic functions zp, natp, +, -, *, mod, etc. Problem 3-1: (len (rev x)) = (len x) Problem 3-2: (member e (app a b)) = (or (member e a) (member e b)) Problem 3-3: (natp n) -> (len (repeat x n)) = n Problem 3-4: (run (app a b) s) = (run b (run a s)))