CZTlite

CZTlite is a lightweight graphical user interface to the CZT toolset. It allows you to write, parse and type-check your Z specifications in a quick and easy manner.

CZT is an open-source project providing tool support for the Z notation. CZTlite provides a text editor for writing Z specifications in LaTeX and utilises CZT to parse and typecheck these specifications. CZTlite also creates an AST view of your specification to aid debugging.

A Text Editor for Z

Birthday BookCZTlite was created because I wanted a simple way to create Z specifications. I used to use fuzz, but this doesn't support standardised Z. I also wanted everything to happen in the same window. CZTlite therefore aims to be a no-frills text editor that includes the most useful Z tools.

There are a few (very slightly) "frilled" features to CZTlite, including the ability to edit multiple documents using tabs, and being able to inspect the AST view of your specification.

Parse and Type-check

Type-check errorSimply hit Ctrl-G (or go to Analyse > Check Specification) and your specification will be parsed and type-checked. Error messages will be presented in the console at the bottom of the window.

Inspecting the Abstract Syntax Tree

Type-check errorUnderstanding problems with your specification can be tricky. CZTlite allows you to view the AST in a tree format. It's not everyone's cup of tea (at least, it's not mine :-) ), but it was in CZT's original GUI, so it has been included here.

You can learn about the AST and how to interpret it on the CZT website.

Future Developments

As the aim of CZTlite is to be simple, there are currently only a few planned future improvements to the tool, and these are mostly focused on improving usability:

  • Remember recently opened files

  • Remember other configuration settings: font size, window size, etc.

  • Check whether a file is already open - it currently will open it twice :-)

  • Syntax highlighting

  • Possibly integrate with an animator/simulator. The original CZT gui integrated with ZLive, I might look at that, or something similar.