1. Problem 1
  2. a)
  3. set-equalp = (and (set-equalp x x)
  4. ((set-equalp x y) => (set-equalp y x))
  5. ((and (set-equalp x y) (set-equalp y z)) => (set-equalp x z)))
  6.  
  7. Reflexive (set-equalp x x) = T
  8. Proof -
  9. (set-equalp x x)
  10. || by def. of setequalp
  11. (and (set-subsetp x x)
  12. (set-subsetp x x)))
  13. || by def. of set-subsetp
  14. (and
  15. (if (endp x)
  16. t
  17. (and (set-memberp (car x) x)
  18. (set-subsetp (cdr x) x))))
  19. (if (endp x)
  20. t
  21. (and (set-memberp (car x) x)
  22. (set-subsetp (cdr x) x))))
  23. || I chose not to expand this any further (by def. of set-memberp), just because it would become too messy and unreadable. However, (set-subsetp x x) always returns T. This is because (set-memberp (car x) x) obviously always returns true because an element of set “x” is always going to be in set “x”. Eventually (set-subsetp x x) will run (set-memberp) on every element of x and the function will return T
  24. (and (T
  25. (T))
  26. || and axiom
  27. T.. Therefore, set-equalp is reflexive
  28.