- For all Lisp assignments: Function names must match the names on the assignments exactly so that we can automate testing and evaluation. If the function name does not match exactly, you may lose a significant number of points. (Double check names like "count-occurrences"! -- are there 1 or 2 c's? how about r's?) Problem 1 - To be clear, the requirement of (greet) is to print "Hello, how are you?" read a line, and print a line that depends on the user input. You don't need to do anything complicated, BUT there must be at least two different possible responses, which are dependent on the user input. After this response, the function must terminate. Problem 2 a. - Please test your function on different types of atoms to make sure it's robust. We will be stress testing your code for a reasonable degree of robustness, which will find problems in your solution if you don't test your code. - If the first argument is not an atom, please print the following message: "INVALID INPUT: count-occurrences expects an atom for its first argument." and return nil. b. - The case where the argument is nil, the expected output is ambiguous (nil is both a list and an atom). Please output nil in this case: (flatten nil) --> nil - No invalid type checking is necessary in this function because atom is defined as not a cons. Thus every possible Lisp value is explicitly handled by the types described in the function definition. Problem 3 The syntax of formulas are defined as the following: - A list where the first argument is a non-nil atom and there are >= 0 additional arguments that are non-nil atoms. - Parameters MUST be named *beliefs* and *ep-memory* (again, for purposes of automating testing and evaluation). a. - You must check to make sure the formula is not duplicated (the assignment is a bit ambiguous on whether this is required or optional). c. - Please use the exact timestamp method described in the assignment. This way we can automate our testing procedure.