Do all of the following.

  1. The alphabet for all these examples is {u,v,w}

    1. 3 or more u followed by one or more of ( either ( v followed by zero or one of v ) or ( w followed by u followed by v ) ) followed by exactly 3 w's followed by exactly 2 v's
    2. all strings that do not contain the substring wvvw
    3. starts with 4 or more vuv's, ends with 5 or more ww's, and does not contain the substring vw.
  2. For the next questions, use the following signature

    signature lab02 = sig
        type `a set
        make `a set
        get `a set -> `a
        put `a * `a set -> `a set
        warp `a set -> `a set
        zilch `a set -> bool
    end
    1. What is the type of
      1. warp
      2. zilch(make)
      3. get (make)
      4. get (warp)
      5. get (put )
      6. put (warp(put (1, lab02.make)),lab02.make)
      7. put (zilch(make)), make)

      where the lab02.xxx notation means that a new instance of the module is used every time -- in other words, the `a are independent

    2. What is the value (if any) of
      1. put (2, put (3, make))
      2. zilch(make)