(* This is a very complex jgraph picture used in a paper on checkpointing.
   Basically, it is a graphic representation of four checkpointing algorithms.

   The four algorithms are in the files seq.jgr, conc.jgr, cow.jgr, and 
   cll.jgr.  This file lays those four algorithms out on the page, gives
   them titles, and then draws a legend at the bottom.  It ends up calling
   the shell construct 24 times, forking off 72 processes, which might seem
   like a lot, but it only takes 9 seconds to produce the output on a
   DECstation 5000.

   Note that in this file, the y-axis if the drawings is shrunk, so that
   they all fit better on the page.
*)

include seq.jgr
yaxis size 1.5
title y -.5 : Sequential Algorithm
x_translate -1.5
y_translate 2.5

include conc.jgr
yaxis size 1.5
x_translate 1.5
y_translate 2.5
title y -.5 : Main Memory Algorithm

include cow.jgr
yaxis size 1.5
title y -.5 : Copy-on-write Algorithm
x_translate -1.5

include cll.jgr
yaxis size 1.5
title y -.5 : CLL Algorithm
x_translate 1.5

newgraph
y_translate -1.9 
x_translate -1
xaxis max 2 min 0 size 2 nodraw
yaxis max 2 min 0 size 2 nodraw

newline linetype solid rarrow asize .07 .04  label fontsize 10
  : Bytes copied / written when all processors are frozen
newline linetype dotted rarrow asize .07 .04  label fontsize 10
  : Bytes copied / written after the processors are restarted
newline linetype longdash rarrow asize .07 .04  label fontsize 10
  : Bytes written after the main memory checkpoint is complete

legend on x 0 y 1
  linelength 1
