-- SmallExample.sak
--Last edit: August 27, 1981  4:13 PM

SmallExample: MONITOR = 
{
speaker: DEVICE[n:CARDINAL] = {
	IN
	OUT out:BOOLEAN
	GUARDIAN {}
	STATE i: CARDINAL
	CONTROL
		FOR i IN [1..n] DO out ← TRUE;  out ← FALSE ENDLOOP } ;

listener: DEVICE = {
	IN in: BOOLEAN
	OUT
	GUARDIAN {}
	STATE 
	CONTROL
		DO WHEN in UP:       writestring[ " up "];
		      WHEN in DOWN: writestring[ " down "];
		ENDLOOP };

CIRCUIT {	
	COMPONENTS s: speaker[n: 10], l:listener
	NODES c: BOOLEAN
	REPRESENTATION
	CONNECTIONS s[out: c], l[in: c] }
}.