Pseudocode for the principal function of the sequence recognizer program: (FINDRECOG K LST). The function FINDRECOG takes two arguments: an integer depth limit and a list of integers. It tries to find a function that generates the sequence whose first few elements match those given in the list. The depth limit controls how many levels of recursion the function is allowed to use before it gives up. Function FINDRECOG, arguments: integer k, list of integers lst) call a function that tests to see if lst satisfies the requirements for an arithmetic sequence and if so returns the function that generates that sequence; If it's not an arithmetic sequence, call a function that tests to see if lst satisfies the requirements for a geometric sequence, and if so returns a function that generates that sequence. If it's not a geometric sequence either, then call a function (let's call it FINDINTERLEAVEDRECOG) that tests to see if the list can be expressed as an interleaving of two other sequences, and if so returns a function for that. If the last call returns NIL (because it could find an interleaved sequence within the depth limit) then return NIL. The function FINDINTERLEAVEDRECOG also takes two arguments... of the same forms as those of FINDRECOG. Here is pseudocode for it: Function FINDINTERLEAVEDRECOG with arguments: integer k, list of integers lst. If k = 0, then return NIL. Split the list into two new lists, evens and odds, alternating elements from the input list. Call FINDRECOG on these lists with k-1 as the depth limit. If either of these calls returns NIL, then return NIL. Otherwise, return a new function that uses the functions returned by these calls and that generates the interleaved sequence.