The applet on this page is experimental software designed to demonstrate the principles of inductive Euler diagram generation.

Start the demo. It requires the Java plugin version 6.0 or greater.

When the program starts, it shows this Hybrid graph of the empty diagram:

From the hybrid window you can chose which zones to split or contain with the next curve. Press 'F' and a dialog appears that allows you to create a new curve:

In this case there is only one zone, the infinite empty zone, and as this cannot be contained, it must be split. Hence, '0' must be typed in the 'Zones To Split' box as shown. Both 'zero' and capital 'o' can be used. The new curve label is automatically assigned to the next unused character, in this case 'a'. Note that these labels must be single characters.

The comparators box lets you choose which of the (typically many) paths that split and contain the correct zones will be chosen. As the diagram gets larger, the first option, that is the 'first path found' is fastest as the other three look at all the possible paths before choosing one. The order from left to right shows the priority of the properties. No difference is likely to be found in outcome before choosing paths through the hybrid graph of Venn 2.

Pressing OK will show the Euler graph that results from the found path. If a 'no path found' message occurs, then there is no simple path that splits the correct zones, contains the correct zones and does not contain zones not split or contained. A simple path is one that does not pass through a node more than once. In this case the Euler graph of Venn 1 appears:

In this window, pressing 'F' will generate the Hybrid graph for the Euler graph:

Here, again another path can be found. To produce Venn 2, press 'F' then split zones "0 a". When more than one zone is in either box, the zones should be added with spaces in between.

The next time the hybrid graph is created, more interesting paths might be entered.

If you choose to create your own Euler graph, please be aware that the vertex and edge labels must be correct. There is little error checking and non-valid Euler graphs are likely to cause crashes.

- Delete a vertex or edge by selecting it and pressing the 'Delete'key.
- Change the label a vertex or edge by double clicking on it.
- Vertexes can be moved by dragging.
- Add a vertex with a double left mouse click on the background.
- Clear the edge bends by selecting an edge and choosing 'Edit' -> 'Remove Edge Bends'.
- Add an edge bend by selecting an edge and choosing choosing 'Edit' -> 'Add Edge Bend'. The edge bends can only be added at one end of the edge, some experimentation is required to work out which end.

It should be noted that this code is experimental, and a number of bugs are likely to be present. Please feedback any queries or bug reports to P.J.Rodgers@kent.ac.uk

The major bug concerns the creation of the hybrid graph. This is done by triangulating the faces of the Euler graph. When the faces are very complex, or there is little space for edges to route, then the hybrid graph creation can fail. To fix this you can run the layout tool provided, a version of Eades' spring embedder that works on the triangulated graph and attempts to make the triangles more regular, whilst maintaining the plane layout. It is also possible to fix complex faces by selecting an edge and choosing 'Edit' -> 'Remove Edge Bends' then 'Edit'-> 'Add Edge Bend' several times to reroute the edge.

The performance of the hybrid graph creation is poor, due to inefficiencies in the coding, which does not reflect the linear time complexity of the ideal code that could perform this task.

For problems or questions regarding this Web site contact P.J.Rodgers@kent.ac.uk.