/// The assumed model of computation
pubtraitModel{/// The final program output type
typeOutput;/// Sets the top of the stack to a given index
////// This function should generate a no-op. It is used just to communicate the starting state
fnstart(&mutself, cell:isize);/// Clears a cell to 0
fnclear(&mutself, cell:isize);/// Clears the data in a cell and copies it to a list of other cells
fnmov(&mutself, cell:isize, to:Vec<isize>);/// Changes the top of the stack to a given index
fntop(&mutself, cell:isize);/// Returns the final program output.
fnfinish(self)->Self::Output;}