<html><body><div style="color:#000; background-color:#fff; font-family:lucida console, sans-serif;font-size:16px"><div style="margin: 0in; font-family: Calibri;" class="" id="yui_3_16_0_1_1428107874901_38363"><font id="yui_3_16_0_1_1428107874901_38785" style="font-size: medium;">What are the
practicalities of outsourcing the business logic of a general purpose program to ACE?  Let's say I want a program to allow two players to play</font><span id="yui_3_16_0_1_1428107874901_38534" style="font-size: medium;"> TicTacToe.  So I define the game in ACE:</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38181"><font size="3"><br></font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38181" dir="ltr"><font size="3" id="yui_3_16_0_1_1428107874901_41228"># Setup</font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38181" dir="ltr"><span style="font-size: medium;" class="" id="yui_3_16_0_1_1428107874901_41237">TicTacToe is a game.</span><font size="3"><br></font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38181" dir="ltr"><font size="3" id="yui_3_16_0_1_1428107874901_39048">Every game has a board and status and exactly 2 players.</font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38207"><font size="3" id="yui_3_16_0_1_1428107874901_38618">If status is not tied or won it is in-progress.</font></div><div class="" id="yui_3_16_0_1_1428107874901_38210" style="margin: 0in;"><font size="3" id="yui_3_16_0_1_1428107874901_38616" class="" style="">The board has exactly nine squares.</font></div><div class="" id="yui_3_16_0_1_1428107874901_38211" style="margin: 0in;"><font size="3" id="yui_3_16_0_1_1428107874901_38615" class="" style="">The squares are square1 … square9.</font></div><div class="" id="yui_3_16_0_1_1428107874901_38215" style="margin: 0in;"><font size="3" id="yui_3_16_0_1_1428107874901_38741" class="" style="">The suits are X and O.</font></div><div class="" id="yui_3_16_0_1_1428107874901_38216" style="margin: 0in;"><font size="3" id="yui_3_16_0_1_1428107874901_38611" class="" style="">Every mark has exactly 1 suit.</font></div><div class="" id="yui_3_16_0_1_1428107874901_38216" style="margin: 0in;"><font size="3" class="" style="" id="yui_3_16_0_1_1428107874901_41194">Every square has exactly 0 or 1 marks. <br></font></div><div class="" id="yui_3_16_0_1_1428107874901_38216" style="margin: 0in;"><font size="3" class="" style=""><br></font></div><div class="" id="yui_3_16_0_1_1428107874901_38216" style="margin: 0in;" dir="ltr"><font size="3" class="" style=""># Play</font></div><div class="" id="yui_3_16_0_1_1428107874901_38216" style="margin: 0in;"><font size="3" class="" style="" id="yui_3_16_0_1_1428107874901_41084">The players are Player1 and Player2.<br></font></div><div class="" id="yui_3_16_0_1_1428107874901_38216" style="margin: 0in;"><font size="3" class="" style="" id="yui_3_16_0_1_1428107874901_41138">Every player has exactly 1 suit.<br></font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38209"><font size="3" id="yui_3_16_0_1_1428107874901_38621">Players have turns.</font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38209"><font size="3" id="yui_3_16_0_1_1428107874901_39245">A turn is adding
exactly 1 mark to the board.</font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38209"><span style="font-size: medium;" class="" id="yui_3_16_0_1_1428107874901_41137">Every mark belongs to the player that added it.</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38209"><span style="font-size: medium;" class="" id="yui_3_16_0_1_1428107874901_41206">A player cannot place a mark if that player owns previous mark. # Alternate turns</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38213" dir="ltr"><span style="font-size: medium;" id="yui_3_16_0_1_1428107874901_41207">A player cannot place
a mark whose suit is that of the other player. # A player is X xor O</span><br></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38217" dir="ltr"><font size="3" id="yui_3_16_0_1_1428107874901_39128">A player cannot place a mark if status is not in-progress. # Stop play</font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38218"><font size="3" id="yui_3_16_0_1_1428107874901_38609">If the Board has
nine marks the status is tied.</font></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38218"><span style="font-size: medium;" id="yui_3_16_0_1_1428107874901_41331">If a player has 3 marks
in the same row, column, or diagonal, status is that that player wins.</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38220"><font size="3" id="yui_3_16_0_1_1428107874901_38992">A row is …</font></div><div style="margin: 0in; font-family: Calibri;" class="" id="yui_3_16_0_1_1428107874901_38221"><font size="3" id="yui_3_16_0_1_1428107874901_38600">Et cetera. </font></div><div style="margin: 0in; font-family: Calibri;" class="" id="yui_3_16_0_1_1428107874901_38221"><font size="3"><br></font></div><div style="margin: 0in; font-family: Calibri;" class="" id="yui_3_16_0_1_1428107874901_38221" dir="ltr"><font size="3" id="yui_3_16_0_1_1428107874901_38586">Then ACE is kept updated during play:  </font><span style="font-size: medium; font-family: 'lucida console', sans-serif;" id="yui_3_16_0_1_1428107874901_41348">Turn for Player1 is adding mark X to Square6.</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38222" dir="ltr"><font size="3"><br></font></div><div style="margin: 0in; font-family: Calibri;" class="" id="yui_3_16_0_1_1428107874901_38223" dir="ltr"><font size="3" id="yui_3_16_0_1_1428107874901_38572">Each turn is followed by query  </font><span style="font-size: medium; font-family: 'lucida console', sans-serif;" id="yui_3_16_0_1_1428107874901_41349">What is game status?</span></div><div style="margin: 0in; font-family: Calibri;" class="" id="yui_3_16_0_1_1428107874901_38223" dir="ltr"><span style="font-size: medium; font-family: 'lucida console', sans-serif;"><br></span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38223" dir="ltr"><span style="font-size: medium;" id="yui_3_16_0_1_1428107874901_41360"><font face="Calibri" id="yui_3_16_0_1_1428107874901_41896">Response could be  </font></span><font id="yui_3_16_0_1_1428107874901_38587" class="" style="font-family: 'lucida console', sans-serif;"><span class="" id="yui_3_16_0_1_1428107874901_38468">X won </span><span style="font-family:Calibri" class="" id="yui_3_16_0_1_1428107874901_38462"> or  C</span><span class="" id="yui_3_16_0_1_1428107874901_38226">onflict with "</span></font><span class="" id="yui_3_16_0_1_1428107874901_39335" style="font-family: 'lucida console', sans-serif; font-size: medium;">Every square has exactly 0 or 1 marks</span><span class="" style="font-family: 'lucida console', sans-serif; font-size: medium;" id="yui_3_16_0_1_1428107874901_41366">"</span><span class="" id="yui_3_16_0_1_1428107874901_39180" style="font-family: Calibri; font-size: medium;">, ... et cetera.</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38227"><span style="font-family:Calibri" class=""><font size="3"><br></font></span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38227" dir="ltr"><span style="font-family:Calibri" class="" id="yui_3_16_0_1_1428107874901_38563"><font size="3" id="yui_3_16_0_1_1428107874901_38799" class="" style="">I'm interested in implementation and also for a</font></span><span style="font-family: Calibri; font-size: medium;" class="" id="yui_3_16_0_1_1428107874901_38809"> guest lecture to gifted middle school students interested in programming (to be followed with programming lectures throughout July).</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38227" dir="ltr"><span style="font-size: medium; font-family: Calibri;" class=""><br></span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38227" dir="ltr"><span style="font-size: medium; font-family: Calibri;" class="" id="yui_3_16_0_1_1428107874901_38808">Thank you,</span></div><div style="margin: 0in;" class="" id="yui_3_16_0_1_1428107874901_38227" dir="ltr"><span style="font-family:Calibri" class="" id="yui_3_16_0_1_1428107874901_38562"><font size="3" id="yui_3_16_0_1_1428107874901_38800">George Herson</font></span></div><div class="" style="" id="yui_3_16_0_1_1428107874901_38228"><br class="" style=""></div></div></body></html>