Main

## Class prover

- java.lang.Object
- - Main.prover

-     public class prover
      extends java.lang.Object

  This class contains the main method. It is responsible to get a command from user and parse and dispatch the command appropriately.
  Author:
    Hamoon

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `prover()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static boolean` | `dispatch(java.lang.String s)`
    `static Automaton` | `dispatchForIntegrationTest(java.lang.String s)`
    `static Automaton` | `eval_def_commands(java.lang.String s)`
    `static boolean` | `loadCommand(java.lang.String s)` load x.p; loads commands from the file x.p.
    `static void` | `main(java.lang.String[] args)` if the command line argument is not empty, we treat args[0] as a filename.
    `static boolean` | `readBuffer(java.io.BufferedReader in, boolean console)` Takes a BufferedReader and reads from it until we hit end of file or exit command.
    `static Automaton` | `regCommand(java.lang.String s)`
    `static void` | `run(java.lang.String[] args)`

    - ### Methods inherited from class java.lang.Object

      `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### prover

          public prover()

  - ### Method Detail

    - #### main

          public static void main(java.lang.String[] args)
                           throws java.lang.Exception

      if the command line argument is not empty, we treat args[0] as a filename. if this is the case, we read from the file and load its commands before we submit control to user. if the the address is not a valid address or the file does not exist, we print an appropriate error message and submit control to the user. if the file contains the exit command we terminate the program.
      Parameters:
        `args` -
      Throws:
        `java.lang.Exception`

    - #### run

          public static void run(java.lang.String[] args)

    - #### readBuffer

          public static boolean readBuffer(java.io.BufferedReader in,
                           boolean console)

      Takes a BufferedReader and reads from it until we hit end of file or exit command.
      Parameters:
        `in` -
        `console` - = true if in = System.in
      Returns:

    - #### dispatch

          public static boolean dispatch(java.lang.String s)
                                  throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### dispatchForIntegrationTest

          public static Automaton dispatchForIntegrationTest(java.lang.String s)
                                                      throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### loadCommand

          public static boolean loadCommand(java.lang.String s)
                                     throws java.lang.Exception

      load x.p; loads commands from the file x.p. The file can contain any command except for load x.p; The user don't get a warning if the x.p contains load x.p but the program might end up in an infinite loop. Note that the file can contain load y.p; whenever y != x and y exist.
      Parameters:
        `s` -
      Returns:
      Throws:
        `java.lang.Exception`

    - #### eval_def_commands

          public static Automaton eval_def_commands(java.lang.String s)
                                             throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### regCommand

          public static Automaton regCommand(java.lang.String s)
                                      throws java.lang.Exception

      Throws:
        `java.lang.Exception`