% Towers of Hanoi

% This version treats disks like blocks in
% the block world

% There are three pegs, and n disks
% which are stacked onto the pegs

% The disks are all of different sizes
% A disk may only have smaller disks on top
% of it

include "../library-ontology"
include "../library"

numeric_symbol NumDisks = 3

module TOWERS_OF_HANOI;

  % This module captures info about moving the disks
  % onto pegs
  import TOWER;

  objects
    Peg(1..3):  Supporter;
    D(1..NumDisks) : Thing;
     	
  variables
     i,j      : 1..NumDisks;

  import NOCONCURRENCY;

%  import TIME;

  axioms
    % A disk can only have a smaller disk on top of it
    constraint Support(D(i))=D(j) -> i < j;
