initProgram :-
	smodelsInit,
	% number of atoms
	smodelsNumAtoms(2),
	% names of the atoms
	smodelsAtomName(a),
	smodelsAtomName(b),
	% first rule
	% a :- not b.
	smodelsBeginBasicRule,
	smodelsAddHead(1),
	smodelsAddNegBody(2),
	smodelsEndRule,
	% second rule
	% b :- not a.
	smodelsBeginBasicRule,
	smodelsAddHead(2),
	smodelsAddNegBody(1),
	smodelsEndRule,
	% end of rules
	smodelsCommitRules,
	% print the program
	smodelsPrintProgram.

showResults :-
	% show all stable models
	repeat,
	smodelsExistsModel(Var),
	(Var = 0 ->
	    true
	;
	    smodelsPrintAnswer,
	    fail),
	% finishes smodel
	smodelsClose.



syntax highlighted by Code2HTML, v. 0.9.1