GUI Requirements * the GUI needs to show a view of the source code * the source code will usually consist of multiple files, these should be shown in separate windows or tabs * the source view must show line numbers * GUI needs to show a view of the AST in a hierarchical way * GUI needs to show a view of the CIVL model in a hierarchical way * Components of the CIVL model * Lexical scope tree * Function tree * Features * Show source code for statements * the GUI needs to guide the user through all commands which can be executed through the command line * verify, run, parse, etc. * there should be a file browser for users to choose the .cvl/.c file to run * the GUI should guide the user by showing the options available to each command in some way and letting the user select those options in a graphical way (buttons, menus, etc.) * the GUI should allow the user to specify by inputs by showing the list of input variables in a table, with one row for each input. The table should show the type of the input variable. * for a boolean input variable, the options should be unspecified (always the default), true, or false. * for an integer input variable, the options should be unspecified (again, the default), or some concrete integer that can be typed into a field * etc. * the GUI needs to display the trace and allow the user to interact with the trace if a counterexample is found * the GUI needs to display the statistics resulting from execution in formatted way (such as a table) * the views of the source code, model, AST, and trace need to all be linked. For example, a location occurring in the trace should be clickable, and clicking it should take you to the location in the CIVL Model. Clicking in some other way should take to the AST, and some other way should take you to the source code.