<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wiki.weizmann.ac.il/playgo/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.weizmann.ac.il/playgo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michal</id>
		<title>WeizmannWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.weizmann.ac.il/playgo/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Michal"/>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Special:Contributions/Michal"/>
		<updated>2026-06-09T21:10:37Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.22.4</generator>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2015-12-08T07:50:47Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example.&lt;br /&gt;
&lt;br /&gt;
This project was carried out by Jaysree Nair and Michal Gordon, in 2013.&lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. Chess game has many rules which we have implemented in this example, see [[http://en.wikipedia.org/wiki/Chess chess]]. On his turn, the user plays by mouse clicking the game pieces and the chess board's squares. A click on a square highlights valid user moves for the selected piece. The game GUI is implemented with [http://en.wikipedia.org/wiki/Swing_(Java) Swing], and the game behavior is implemented with LSCs. This example demonstrates LSCs creation in two different ways, which also generates different LSCs: &amp;lt;br&amp;gt;&lt;br /&gt;
# Using the [[PlayGo_Feature_List#Natural_language_play-in | natural language interface to LSCs]] (NL-Play-In).&lt;br /&gt;
# Using the LSC Editor.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessGUIScreenShot.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example 1 with NL-Play-In  ==&lt;br /&gt;
&lt;br /&gt;
The LSCs in this section were created using [[PlayGo Feature List#Natural_language_play-in|NL-Play-In]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Requirement in Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| SelectSource&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectSource.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SetPossiblePosition&lt;br /&gt;
| when any Square selectSource then the Square setPossibleSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SetPossiblePositionNL.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SelectTarget&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CheckPossibility&lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MovePiece&lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:MoveSource.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChangeTurn&lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurn&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurn2&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ResetBoard&lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| checkmate&lt;br /&gt;
| when any Square MovePiece then the Square check_CheckMate &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:Checkmate-NL.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| BlkKingPosition&lt;br /&gt;
| when any Square MovePiece, if the Square piecename is &amp;quot;blkking&amp;quot; then the board BlkkingPosition changes to the Square position&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:BlkKingPosition.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WteKingPosition&lt;br /&gt;
| when any Square MovePiece, if the Square piecename is &amp;quot;wteking&amp;quot; then the board WtekingPosition changes to the Square position &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WteKingPosition.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Newgame&lt;br /&gt;
| when the user click the newgame then the newgame loadnewgame and the board reset &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:NewGame.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowScoreblack&lt;br /&gt;
| when the board state change then the BlkScore show the board blackPoint &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ShowScoreblack.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowScorewhite&lt;br /&gt;
| when the board state change then the WteScore show the board whitePoint &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ShowScorewhite.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowNextTurn&lt;br /&gt;
| when the board state change then the NextTurndisplay show the board state &amp;amp;nbsp;&lt;br /&gt;
| [[Image:ShowNextTurn.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ResetPossiblePosition&lt;br /&gt;
| when any Square selectTarget then the Square reset &amp;amp;nbsp;&lt;br /&gt;
| [[Image:ResrPossiblePositionNL.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurnReset&lt;br /&gt;
| when any Square showMessage then the Square reset &amp;amp;nbsp;&lt;br /&gt;
| [[Image:WrongTurnReset.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Download the ChessProject Example  ===&lt;br /&gt;
&lt;br /&gt;
Below are links for downloading the ChessProject final application, as well as the LSC project that can be opened and modified in PlayGo.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ChessProject final application (runnable jar)  ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessProjectSwingGUI.zip|Runnable ChessProject with Swing GUI]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To run the ChessProject, simply extract the downloaded zip and double click the jar file.&amp;lt;br&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==== ChessProject LSC project  ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessProject.zip|The ChessProject LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Installation Instructions  =====&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace.&lt;br /&gt;
##Click the 'Next' button.&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded ChessProject example.&lt;br /&gt;
##Click finish.&lt;br /&gt;
#The ChessProject example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]].&lt;br /&gt;
&lt;br /&gt;
== Example 2 ==&lt;br /&gt;
&lt;br /&gt;
The following LSCs were created using the LSC editor. Our intention was to create a specification with more than one symbolic lifeline in the LSCs, which was not supported by NL-Play-In.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Requirement&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| PieceClick&lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type and if the Sq1 is a source then the square Sq1 check_Move square Sq2.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ClickonPiece.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MovePiece&lt;br /&gt;
| When a square Sq1 check_Move square Sq2, canmove is assigned with whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2.&lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece&lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2.&lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| NextMove&lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;.&lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| SetSource&lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ShowMessage&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ShowMessageReset&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ResetPossiblePosition&lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1.&lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| CheckMate&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, then isCheck is assigned whether there is any checkmate, if the checkmate is true then the square show the checkmate otherwise square removecheckmate.&lt;br /&gt;
| [[Image:Checkmate.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| kingposition&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the Sq2 piecname is wteking then the Sq1 removecheckMate and the board wtekingposition is set to the Sq2 position else if the Sq2 piecname is blkking then the Sq1 removecheckMate and the board blkkingposition is set to the Sq2 position .&lt;br /&gt;
| [[Image:Kingposition.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| showturn&lt;br /&gt;
| When the board set the Next_turn to any then the NextTurn show the board Next turn.&lt;br /&gt;
| [[Image:Showturn.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| BlackPiecepoint&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the board Next_turn is white then the blk_score show the black point.&lt;br /&gt;
| [[Image:Blackpiecepoint.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| WhitePiecepoint&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the board Next_turn is black then the wte_score show the white point.&lt;br /&gt;
| [[Image:Whitepiecepoint.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| GameOver&lt;br /&gt;
| When the any square Sq1 movePiece to any square Sq2, if the board black point is 0 then the white won the game otherwise if the board white point is 0 then the black won the game&lt;br /&gt;
| [[Image:GameOver.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Loadgame&lt;br /&gt;
| when the user click NewGame then the NewGame load new game&lt;br /&gt;
| [[Image:LoadGame.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download the ChessGame Example  ===&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the ChessGame final application, as well as the LSC project that can be opened and modified in PlayGo.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ChessGame final application (runnable jar)  ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessGameSwingGUI.zip|Runnable Chess Game with Swing GUI]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To run the ChessGame, simply extract the downloaded zip and double click the jar file.&amp;lt;br&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==== ChessGame LSC project  ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessGame.zip|The ChessGame LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Installation Instructions  =====&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace.&lt;br /&gt;
##Click the 'Next' button.&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded ChessGame example.&lt;br /&gt;
##Click finish.&lt;br /&gt;
#The ChessGame example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections  ==&lt;br /&gt;
&lt;br /&gt;
'''Example1-ChessProject'''&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;[[Image:SivChessGame.png|SIV Graph]]&amp;lt;br&amp;gt; Dependency graph for example #1. This graph shows clusters (communities). The LSC MovePiece is selected here and the connected LSCs are colored (blue or pink). Green edges indicate unified messages between LSCs. &amp;lt;br&amp;gt;For details, see [[http://www.weizmann.ac.il/mediawiki/harelgroup/index.php/SIV_Plugin | SIV-Plugin]]. &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example2-ChessGame'''&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;[[Image:ChessSIV-example2.png|SIV Graph]]&amp;lt;br&amp;gt; Dependency graph for example #2. This graph shows clusters (communities). The LSC MovePiece is selected here and the connected LSCs are colored (blue or pink). Green edges indicate unified messages between LSCs.&amp;lt;br&amp;gt; Note: messages were unified here regardless of the parameters, since parameters are symbolic, e.g., MovePiece(String piecename). &amp;lt;br&amp;gt;For details, see[[http://www.weizmann.ac.il/mediawiki/harelgroup/index.php/SIV_Plugin | SIV-Plugin]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SystemModel  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; Example1-ChessProject&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:ChessProjectSystemModel.png|SystemModel]] &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; Example2-ChessGame&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:ChessGameSystemmodel.png|System Model]] &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2013-10-23T08:22:14Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in| natural language (NL) play-in]], you can write scenarios in controlled natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL Rules ===&lt;br /&gt;
The scenarios specified in controlled NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL-Play-In Interface ===&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quick fix mechanism  ===&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''Green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''Red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity, i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''Black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Learn from Examples ===&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Wristwatch_Example Wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Chess_Game_Example#Example_1_.28ChessProject_-_chesswithNL.umlseq.29_with_NL-Play-In Chess].&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/PlayGo_Examples#Baby_Monitor Baby Monitor].&lt;br /&gt;
&lt;br /&gt;
== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br&amp;gt;[[Image:Playin.toolbar1.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Insert new LSC elements, such as new LSC, new Instance, Assertion, Assignment etc…&amp;lt;br&amp;gt;[[Image:Playin.toolbar2.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You may want to carry out operations on the GUI without affecting the LSC (e.g., for restoring the GUI to a state from which you want to play in). To do this, press the 'Ignore GUI Play-In' button, next to the 'Play-In Mode' drop-down button, and carry out the required operation. Once done, press the 'Ignore GUI Play-In' button again, to release it (in which case GUI operations will no longer be ignored):&amp;lt;br&amp;gt; [[Image:Playin.ignore.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br&amp;gt; [[Image:Properties.view.rightClickMenu.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Feature_List</id>
		<title>PlayGo Feature List</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Feature_List"/>
				<updated>2013-10-22T09:44:13Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: /* Natural language play-in */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Play-out strategies ==&lt;br /&gt;
&lt;br /&gt;
LSC specifications or `programs' may be underspecified, since the language allows various kinds of non-determinism.  Thus, a special mechanism is needed in order to execute LSC programs.  This execution mechanism is generically termed [[Language_%26_Concepts#Play-Out |''play-out'']].  The core of the [[Language_%26_Concepts#Play-Out|play-out]] process is a strategy mechanism that is responsible for choosing the next method to execute.  The choice is based on the specification and the current state of the system.&lt;br /&gt;
&lt;br /&gt;
Different kinds of play-out mechanisms may be defined.  Each may be viewed as a different operational semantics for LSC.&lt;br /&gt;
&lt;br /&gt;
PlayGo uses a [http://en.wikipedia.org/wiki/Strategy_pattern strategy pattern] to allow the definition, implementation, and use of new, user-defined play-out strategies.  It also includes several built-in, pre-defined play-out strategies, which we now describe.&lt;br /&gt;
&lt;br /&gt;
=== Naïve play-out ===&lt;br /&gt;
&lt;br /&gt;
The ''naïve play-out'' strategy is the simplest one.  It arbitrarily chooses a non-violating method from among the current set of methods that are enabled for execution in at least one chart, but which are not violating in any chart.&lt;br /&gt;
&lt;br /&gt;
=== Random  play-out===&lt;br /&gt;
&lt;br /&gt;
The ''random play-out'' strategy is similar to the naïve play-out strategy. However, it chooses the next method to execute randomly, using a 'seed' number. The user can either choose a constant seed, in which case the same method will be selected in repeated runs, or ask PlayGo to use random seed, thus causing different, random method selection in each run.&lt;br /&gt;
&lt;br /&gt;
=== Interactive play-out ===&lt;br /&gt;
&lt;br /&gt;
The ''interactive play-out'' strategy allows the user to choose the next method to execute. The user is presented with a dialog that lists all the currently enabled non-violating methods and is expected to select one of them. The selected method is returned to the play-out mechanism for execution.&lt;br /&gt;
&lt;br /&gt;
=== Smart play-out ===&lt;br /&gt;
&lt;br /&gt;
''Smart play-out'' is a smarter, safer way of choosing the next method to execute. It considers not only the current set of enabled non-violating methods, but also looks ahead and picks up a finite sequence of methods that will lead to a successful (non-violating) [[LSC Reference#Super_Step|superstep]], if any such sequence exists.&lt;br /&gt;
&lt;br /&gt;
To compute a safe superstep, PlayGo uses model-checking techniques.&lt;br /&gt;
This is done by challenging the model checker to prove that there is no superstep that can take place without violating the LSC specification. If no such superstep exists, there is no way to proceed. But if there is such a superstep, the model checker provides it as a counter-example. PlayGo uses the counter-example to guide the execution.&lt;br /&gt;
&lt;br /&gt;
Smart play-out is implemented in PlayGo using [http://jtlv.ysaar.net/ JTLV].&lt;br /&gt;
&lt;br /&gt;
Smart play-out was first described in &amp;lt;ref&amp;gt; D. Harel, H. Kugler, R. Marelly and A. Pnueli, &amp;quot;Smart Play-Out of Behavioral Requirements&amp;quot;, Proc. 4th Int. Conf. on Formal Methods in Computer-Aided Design (FMCAD 2002), November 2002, pp. 378-398.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Synthesis  ===&lt;br /&gt;
&lt;br /&gt;
Looking one superstep forward, as is done in the smart play-out&lt;br /&gt;
strategy, may not be enough, because a safe superstep does not&lt;br /&gt;
guarantee future execution free of dead locks.  An adverse environment may&lt;br /&gt;
be able to cause the system to fail in satisfying the requirements.&lt;br /&gt;
Thus, PlayGo offers another strategy, based on the technology of&lt;br /&gt;
''controller synthesis''. Controller synthesis takes the LSC&lt;br /&gt;
specification and attempts to compute a controller whose behavior is guaranteed&lt;br /&gt;
to satisfy the requirements set by the specification. The computed controller is then used to guide the&lt;br /&gt;
play-out mechanism. For the case where the LSC specification is&lt;br /&gt;
unrealizable and a controller cannot be synthesized, PlayGo offers a&lt;br /&gt;
debugging mode termed [[PlayGo_Feature_List#Counter_play-out | counter play-out]].&lt;br /&gt;
&lt;br /&gt;
Synthesis for LSC was first described in &amp;lt;ref&amp;gt;D. Harel and H. Kugler,&lt;br /&gt;
“Synthesizing state-based object systems from LSC specifications,”&lt;br /&gt;
Int. J. Found. Comput. Sci.,vol. 13, no. 1, pp. 5–51, 2002&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The variant of LSC synthesis used in PlayGo is described in &amp;lt;ref&amp;gt;S.&lt;br /&gt;
Maoz and Y. Sa’ar, “Assume-Guarantee Scenarios: Semantics and&lt;br /&gt;
Synthesis,” Proc. 15th Int. Conf. on Model Driven Engineering Languages and Systems (MoDELS), LNCS 7590, pp. 335-351, Springer, 2012&amp;lt;/ref&amp;gt;. This variant is stronger than&lt;br /&gt;
previous variants of LSC synthesis, as it supports environment&lt;br /&gt;
assumptions.  It is implemented using [http://jtlv.ysaar.net/ JTLV],&lt;br /&gt;
following the symbolic fixpoint algorithm described in &amp;lt;ref&amp;gt;N.&lt;br /&gt;
Piterman, A. Pnueli, and Y. Sa’ar, “Synthesis of Reactive(1) Designs,”&lt;br /&gt;
in VMCAI, ser. LNCS, vol. 3855. Springer,2006, pp. 364–380.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Counter play-out ==&lt;br /&gt;
&lt;br /&gt;
An LSC specification may be unrealizable.  That is, if an adverse&lt;br /&gt;
environment can force any possible execution to violate the guarantees&lt;br /&gt;
that the system needs to satisfy, a controller cannot be synthesized.&lt;br /&gt;
&lt;br /&gt;
Counter play-out is an interactive debugging method for unrealizable&lt;br /&gt;
LSC specifications.  When such a specification is&lt;br /&gt;
identified, PlayGo generates a controller that plays the role of the&lt;br /&gt;
environment and lets the engineer play the role of the system. During&lt;br /&gt;
execution, the former chooses environment moves such that the latter&lt;br /&gt;
is forced to eventually fail in satisfying the system's requirements.&lt;br /&gt;
This results in an interactive, guided&lt;br /&gt;
execution, which can lead to the root causes of unrealizability. The&lt;br /&gt;
generated controller constitutes a proof that the specification&lt;br /&gt;
is conflicting and cannot be realized.&lt;br /&gt;
&lt;br /&gt;
Counter play-out is based on a counter strategy, which is computed in&lt;br /&gt;
PlayGo by solving a Rabin game using a symbolic, fixpoint algorithm.&lt;br /&gt;
Counter play-out is described in &amp;lt;ref&amp;gt;S. Maoz and Y. Sa’ar, “Counter&lt;br /&gt;
Play-Out: Executing Unrealizable Scenario-Based Specifications,”&lt;br /&gt;
to appear in ICSE'13 (2013)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Semantic Zoom  ==&lt;br /&gt;
&lt;br /&gt;
Large LSCs are difficult to view and navigate.  To address this, PlayGo offers a ''semantic zoom'' feature. It allows one to zoom-in and zoom-out of the chart, based on custom weights on the chart's elements (messages, conditions, etc.).&lt;br /&gt;
&lt;br /&gt;
Zooming in and out reveals and hides chart elements.  Hidden elements are replaced with a placeholder, to allows the user to understand the context of the remaining elements. Consecutive placeholders are merged into a single, darker-colored placeholder. Effectively, the user can view the most important elements that fit on the screen, while the placeholders hint at the missing information.&lt;br /&gt;
&lt;br /&gt;
In different contexts, different chart elements may be considered more important than others.  Thus, the custom weights of the elements are calculated according to the task at hand (debugging, understanding inter-dependencies, etc.).  The user can choose a strategy to use for calculating the weights.&lt;br /&gt;
&lt;br /&gt;
Semantic zoom in PlayGo is described in &amp;lt;ref&amp;gt;M. Gordon and D. Harel, &amp;quot;Semantic Navigation Strategies for Scenario-Based Programming&amp;quot;, Proc. IEEE Symp. on Visual Languages and Human-Centric Computing (VL/HCC 2010), 2010, pp.219-226.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:ATM.ZoomOut.png|500px]] [[Image: ATM.png ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 1: On the right, the full LSC. On the left, a zoomed-out view. Note the gray scale placeholders, which hide LSC elements. The darker it is, the more elements it hides.&amp;lt;br&amp;gt; The green dotted ellipse marks the most recent placeholder that was added or changed during zoom-out. &amp;lt;br&amp;gt; When zooming in, the last added element is marked with this green dotted ellipse.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=dDSszMjanXs Watch a Semantic Zoom demo]&lt;br /&gt;
&lt;br /&gt;
== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo supports a number of ways to define LSCs: manual editing, play-in, natural language play-in and show &amp;amp;amp; tell.&lt;br /&gt;
&lt;br /&gt;
Natural language play-in allows the user to create LSCs through a natural language textual interface rather than by drawing the elements or interacting with the system.&lt;br /&gt;
&lt;br /&gt;
The language is controlled and structured English fragment accepted by a CFG parser especially developed for the semantics of LSCs. It allows writing requirements in separate sentences and parsing them into LSCs that can be later executed. Here are two examples of requirements:&lt;br /&gt;
&lt;br /&gt;
#''when the user presses the d button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time''&lt;br /&gt;
#''when the user presses the a button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time''&lt;br /&gt;
&lt;br /&gt;
The language is domain-general, and uses the wordnet dictionary &amp;lt;ref&amp;gt; Princeton University &amp;quot;About WordNet.&amp;quot; WordNet. Princeton University. 2010. [http://wordnet.princeton.edu wordnet] &amp;lt;/ref&amp;gt; to decide which part of speech is to be used (e.g., noun, verb, adjective, etc.) and what element in the model matches each word. The user can disambiguate terms where necessary, and the selections are persistent for the model, assuming the writer refers to the same objects / actions using the same words.&lt;br /&gt;
&lt;br /&gt;
Natural language play-in is described in &amp;lt;ref&amp;gt; M. Gordon and D. Harel, &amp;quot;Generating Executable Scenarios from Natural Language&amp;quot;, Proc. 10th Int. Conf. on Comput. Linguistics and Intelligent Text Processing (CICLing'09),  Lecture Notes In Computer Science, vol. 5449. Springer-Verlag, Berlin, Heidelberg, 2009, pp. 456-467.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More about [http://www.weizmann.ac.il/mediawiki/playgo/index.php/How_to_Play-In#Natural_language_play-in How to Play-In with NL].&lt;br /&gt;
&lt;br /&gt;
== Show &amp;amp;amp; tell play-in  ==&lt;br /&gt;
&lt;br /&gt;
Show &amp;amp;amp; Tell is a play-in feature that allows the user to create LSCs through a natural language textual interface combined with the classical play-in technique of interacting with the GUI of the system.&lt;br /&gt;
&lt;br /&gt;
The 'TELL' part is based on natural language play-in; see above.&lt;br /&gt;
&lt;br /&gt;
The 'SHOW' part allows the user to point at or manipulate objects in the GUI or the [[Language &amp;amp; Concepts#System_Model|System Model]] in order to create parts of the LSC. A description of the recorded interaction is first added to the requirements text, and when the user approves it the LSC is created.&lt;br /&gt;
&lt;br /&gt;
The interaction is interpreted according to the action performed by the user and the current parsing state for the entered text at the time of interaction.  The user can click on a button and refer to its name, or drag a slider and refer to the drag operation.&lt;br /&gt;
&lt;br /&gt;
For example, if the state of the textual part is &amp;quot;when the user clicks...&amp;quot; and the user clicks the cancel button, the suggested addition to the text will be &amp;quot;the cancel-button&amp;quot;. However, if the state of the text is &amp;quot;when ...&amp;quot;, with the same interaction, the suggested addition to the text will be &amp;quot;the user clicks the cancel-button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The parsing is performed online using an active chart parser, and the show &amp;amp;amp; tell algorithm tests possible completions for the incompleted parse and finds the best fit and longest possible addition. If more than one possible addition exists, the user is prompted to choose from a list of the possibilities.&lt;br /&gt;
&lt;br /&gt;
Show &amp;amp;amp; tell is described in &amp;lt;ref&amp;gt;M. Gordon, D. Harel, &amp;quot;Show-and-Tell Play-In: Combining Natural Language with User Interaction for Specifying Behavior&amp;quot;, Proc. IADIS Interfaces and Human Computer Interaction 2011 (IHCI 2011), pp. 360-364.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[http://www.wisdom.weizmann.ac.il/~michalk/Projects/SaT/ More about show &amp;amp;amp; tell]&lt;br /&gt;
&lt;br /&gt;
== Trace exploration and visualization ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides ways to explore and visualize traces of LSC executions. A trace log may be generated during play-out and it can then be visually explored using the [http://www.weizmann.ac.il/mediawiki/playgo/index.php/The_Tracer Tracer] and the [http://www.cs.bgu.ac.il/~geraw/SupWebSite/ TraceVis] tools.&lt;br /&gt;
&lt;br /&gt;
The Tracer is described in &amp;lt;ref&amp;gt; S. Maoz and D. Harel, &amp;quot;On Tracing Reactive Systems&amp;quot;, Software and System Modeling (SoSyM), 10(4): 447-468 (2011)&amp;lt;/ref&amp;gt;.  TraceVis is described in &amp;lt;ref&amp;gt;N. Eitan, M. Gordon, D. Harel, A. Marron and G. Weiss, &amp;quot;On Visualization and Comprehension of Scenario-Based Programs&amp;quot;, Proc. 19th Int. Conf. on Program Comprehension (ICPC), 2011, pp. 189-192.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tracer.png|800px|A trace of a pacman game in the Tracer tool]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 2: A trace of a pacman game in the Tracer tool.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:TraceVis.png|800px|A trace of a pacman game in the TraceVis]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 3: A trace of a pacman game in the TraceVis.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scenario inter-dependency visualization  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides a graph-based visualization of inter-dependencies between LSCs.&lt;br /&gt;
&lt;br /&gt;
[[Image:SIVExample.png|800px|Scenario inter-dependency visualization]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 4: Scenario inter-dependency visualization of an ATM model. Dependencies of three types are shown.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each LSC is represented by a node. Edges represent various kinds of inter-dependencies between the LSCs. There are three kinds of inter-dependencies that the graph visualizes:&lt;br /&gt;
&lt;br /&gt;
#Causal edge: A directed edge that represents a message in execution mode in the source LSC being potentially unifiable with a message in monitor mode in the target LSC. This edge type represents the possibility that, during runtime, the source LSC might trigger the target LSC. Causal edges are denoted by brown directed arrows.&lt;br /&gt;
#Sync edge: An undirected edge that represents a message in execution mode in one LSC being potentially unifiable with a message in execution mode in the other. This edge type represents the possibility that two LSCs might have to synchronize their execution. Sync edges are undirected and are denoted by green lines.&lt;br /&gt;
#Shared object edge: An undirected edge that represents that the two LSCs containing lifelines of the same object. Shared object edges are undirected and are denoted by purple lines.&lt;br /&gt;
&lt;br /&gt;
The graph-based visualization of inter-dependencies was presented in &amp;lt;ref&amp;gt;D. Harel and I. Segall, &amp;quot;Visualizing Inter-Dependencies Between Scenarios&amp;quot;, Proc. ACM Symp. on Software Visualization (SOFTVIS'08), 2008, pp. 145-153.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Composition ==&lt;br /&gt;
PlayGo supports the notion of object composition in scenario-based specifications. Roughly, in order to deal with object composition, the LSC language is extended with appropriate syntax and semantics that allow the specification and interpretation of scenario hierarchies – trees of scenarios – based on the object composition hierarchy in the underlying model. Object composition for LSC is described in &amp;lt;ref&amp;gt;Y. Atir, D. Harel, A. Kleinbort, and S. Maoz, &amp;quot;Object Composition in Scenario-Based Programming&amp;quot;, FASE 2008, pp. 301-316.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Polymorphism==&lt;br /&gt;
&lt;br /&gt;
PlayGo supports an extended, polymorphic variant of scenario-based specification.  Roughly, lifelines may be marked as symbolic and are labeled with class names rather than specific object names.  In this case, the lifeline is not statically bound to a concrete object.&lt;br /&gt;
Instead, it may dynamically bind, at execution time, to any object of the class or any of its sub classes.  This results in a scenario-based behavioral subtyping mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
Polymorphism is described in &amp;lt;ref&amp;gt;S. Maoz,   Polymorphic Scenario-Based Specification&lt;br /&gt;
Models: Semantics and Applications Software and Systems Modeling (SoSyM), 11 (3), 2012, pp. 327-345.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Java API for LSC Creation  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides a Java API for the purpose of directly coding a non-graphic version of an LSC. Below is a code sample for creating an LSC that describes the basic move of a memory game.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;big&amp;gt;&amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;void createMemoryGameMoveLSC()&lt;br /&gt;
 {&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCInteraction memoryGameMoveLSC = memoryGameCollaboration.createLSC(&amp;quot;MemoryGameMove&amp;quot;);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCLifeline user = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;User&amp;quot;, &amp;quot;User&amp;quot;, LifelineType.USER, Binding.STATIC);&lt;br /&gt;
 LSCLifeline mc1Lifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryCard1&amp;quot;, &amp;quot;MemoryCard&amp;quot;, LifelineType.SYSTEM, Binding.DYNAMIC);&lt;br /&gt;
 LSCLifeline mc2Lifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryCard2&amp;quot;, &amp;quot;MemoryCard&amp;quot;, LifelineType.SYSTEM, Binding.DYNAMIC);&lt;br /&gt;
 LSCLifeline memoryPanelLifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryPanel&amp;quot;, &amp;quot;MemoryPanel&amp;quot;, LifelineType.SYSTEM, Binding.STATIC);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(user, mc1Lifeline, &amp;quot;flipUp&amp;quot;, Temperature.Cold, ExecutionKind.MONITORED);&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(user, mc2Lifeline, &amp;quot;flipUp&amp;quot;, Temperature.Cold, ExecutionKind.MONITORED);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 ArrayList&amp;amp;lt;LSCLifeline&amp;amp;gt; conditionLifelines = new ArrayList&amp;amp;lt;LSCLifeline&amp;amp;gt;();&lt;br /&gt;
 conditionLifelines.add(mc1Lifeline);&lt;br /&gt;
 conditionLifelines.add(mc2Lifeline);&lt;br /&gt;
 conditionLifelines.add(memoryPanelLifeline);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCStateInvariant sync = memoryGameMoveLSC.createLSCSyncConstraint(conditionLifelines);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage&lt;br /&gt;
                  (memoryPanelLifeline, memoryPanelLifeline, &amp;quot;beep&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCStateInvariant condition = memoryGameMoveLSC.createLSCOpaqueCondition&lt;br /&gt;
                  (&amp;quot;!memoryCard1.match(memoryCard2)&amp;quot;, conditionLifelines, &amp;quot;!memoryCard1.match(memoryCard2)&amp;quot;);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(mc1Lifeline, mc1Lifeline, &amp;quot;flipDown&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(mc2Lifeline, mc2Lifeline, &amp;quot;flipDown&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 } &amp;lt;/span&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code represents the LSC shown in the figure below:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|frame|left|An LSC describing the basic rule of a memory game]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Java API|More about Java API]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Feature_List</id>
		<title>PlayGo Feature List</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Feature_List"/>
				<updated>2013-10-22T09:43:58Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: /* Natural language play-in */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Play-out strategies ==&lt;br /&gt;
&lt;br /&gt;
LSC specifications or `programs' may be underspecified, since the language allows various kinds of non-determinism.  Thus, a special mechanism is needed in order to execute LSC programs.  This execution mechanism is generically termed [[Language_%26_Concepts#Play-Out |''play-out'']].  The core of the [[Language_%26_Concepts#Play-Out|play-out]] process is a strategy mechanism that is responsible for choosing the next method to execute.  The choice is based on the specification and the current state of the system.&lt;br /&gt;
&lt;br /&gt;
Different kinds of play-out mechanisms may be defined.  Each may be viewed as a different operational semantics for LSC.&lt;br /&gt;
&lt;br /&gt;
PlayGo uses a [http://en.wikipedia.org/wiki/Strategy_pattern strategy pattern] to allow the definition, implementation, and use of new, user-defined play-out strategies.  It also includes several built-in, pre-defined play-out strategies, which we now describe.&lt;br /&gt;
&lt;br /&gt;
=== Naïve play-out ===&lt;br /&gt;
&lt;br /&gt;
The ''naïve play-out'' strategy is the simplest one.  It arbitrarily chooses a non-violating method from among the current set of methods that are enabled for execution in at least one chart, but which are not violating in any chart.&lt;br /&gt;
&lt;br /&gt;
=== Random  play-out===&lt;br /&gt;
&lt;br /&gt;
The ''random play-out'' strategy is similar to the naïve play-out strategy. However, it chooses the next method to execute randomly, using a 'seed' number. The user can either choose a constant seed, in which case the same method will be selected in repeated runs, or ask PlayGo to use random seed, thus causing different, random method selection in each run.&lt;br /&gt;
&lt;br /&gt;
=== Interactive play-out ===&lt;br /&gt;
&lt;br /&gt;
The ''interactive play-out'' strategy allows the user to choose the next method to execute. The user is presented with a dialog that lists all the currently enabled non-violating methods and is expected to select one of them. The selected method is returned to the play-out mechanism for execution.&lt;br /&gt;
&lt;br /&gt;
=== Smart play-out ===&lt;br /&gt;
&lt;br /&gt;
''Smart play-out'' is a smarter, safer way of choosing the next method to execute. It considers not only the current set of enabled non-violating methods, but also looks ahead and picks up a finite sequence of methods that will lead to a successful (non-violating) [[LSC Reference#Super_Step|superstep]], if any such sequence exists.&lt;br /&gt;
&lt;br /&gt;
To compute a safe superstep, PlayGo uses model-checking techniques.&lt;br /&gt;
This is done by challenging the model checker to prove that there is no superstep that can take place without violating the LSC specification. If no such superstep exists, there is no way to proceed. But if there is such a superstep, the model checker provides it as a counter-example. PlayGo uses the counter-example to guide the execution.&lt;br /&gt;
&lt;br /&gt;
Smart play-out is implemented in PlayGo using [http://jtlv.ysaar.net/ JTLV].&lt;br /&gt;
&lt;br /&gt;
Smart play-out was first described in &amp;lt;ref&amp;gt; D. Harel, H. Kugler, R. Marelly and A. Pnueli, &amp;quot;Smart Play-Out of Behavioral Requirements&amp;quot;, Proc. 4th Int. Conf. on Formal Methods in Computer-Aided Design (FMCAD 2002), November 2002, pp. 378-398.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Synthesis  ===&lt;br /&gt;
&lt;br /&gt;
Looking one superstep forward, as is done in the smart play-out&lt;br /&gt;
strategy, may not be enough, because a safe superstep does not&lt;br /&gt;
guarantee future execution free of dead locks.  An adverse environment may&lt;br /&gt;
be able to cause the system to fail in satisfying the requirements.&lt;br /&gt;
Thus, PlayGo offers another strategy, based on the technology of&lt;br /&gt;
''controller synthesis''. Controller synthesis takes the LSC&lt;br /&gt;
specification and attempts to compute a controller whose behavior is guaranteed&lt;br /&gt;
to satisfy the requirements set by the specification. The computed controller is then used to guide the&lt;br /&gt;
play-out mechanism. For the case where the LSC specification is&lt;br /&gt;
unrealizable and a controller cannot be synthesized, PlayGo offers a&lt;br /&gt;
debugging mode termed [[PlayGo_Feature_List#Counter_play-out | counter play-out]].&lt;br /&gt;
&lt;br /&gt;
Synthesis for LSC was first described in &amp;lt;ref&amp;gt;D. Harel and H. Kugler,&lt;br /&gt;
“Synthesizing state-based object systems from LSC specifications,”&lt;br /&gt;
Int. J. Found. Comput. Sci.,vol. 13, no. 1, pp. 5–51, 2002&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The variant of LSC synthesis used in PlayGo is described in &amp;lt;ref&amp;gt;S.&lt;br /&gt;
Maoz and Y. Sa’ar, “Assume-Guarantee Scenarios: Semantics and&lt;br /&gt;
Synthesis,” Proc. 15th Int. Conf. on Model Driven Engineering Languages and Systems (MoDELS), LNCS 7590, pp. 335-351, Springer, 2012&amp;lt;/ref&amp;gt;. This variant is stronger than&lt;br /&gt;
previous variants of LSC synthesis, as it supports environment&lt;br /&gt;
assumptions.  It is implemented using [http://jtlv.ysaar.net/ JTLV],&lt;br /&gt;
following the symbolic fixpoint algorithm described in &amp;lt;ref&amp;gt;N.&lt;br /&gt;
Piterman, A. Pnueli, and Y. Sa’ar, “Synthesis of Reactive(1) Designs,”&lt;br /&gt;
in VMCAI, ser. LNCS, vol. 3855. Springer,2006, pp. 364–380.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Counter play-out ==&lt;br /&gt;
&lt;br /&gt;
An LSC specification may be unrealizable.  That is, if an adverse&lt;br /&gt;
environment can force any possible execution to violate the guarantees&lt;br /&gt;
that the system needs to satisfy, a controller cannot be synthesized.&lt;br /&gt;
&lt;br /&gt;
Counter play-out is an interactive debugging method for unrealizable&lt;br /&gt;
LSC specifications.  When such a specification is&lt;br /&gt;
identified, PlayGo generates a controller that plays the role of the&lt;br /&gt;
environment and lets the engineer play the role of the system. During&lt;br /&gt;
execution, the former chooses environment moves such that the latter&lt;br /&gt;
is forced to eventually fail in satisfying the system's requirements.&lt;br /&gt;
This results in an interactive, guided&lt;br /&gt;
execution, which can lead to the root causes of unrealizability. The&lt;br /&gt;
generated controller constitutes a proof that the specification&lt;br /&gt;
is conflicting and cannot be realized.&lt;br /&gt;
&lt;br /&gt;
Counter play-out is based on a counter strategy, which is computed in&lt;br /&gt;
PlayGo by solving a Rabin game using a symbolic, fixpoint algorithm.&lt;br /&gt;
Counter play-out is described in &amp;lt;ref&amp;gt;S. Maoz and Y. Sa’ar, “Counter&lt;br /&gt;
Play-Out: Executing Unrealizable Scenario-Based Specifications,”&lt;br /&gt;
to appear in ICSE'13 (2013)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Semantic Zoom  ==&lt;br /&gt;
&lt;br /&gt;
Large LSCs are difficult to view and navigate.  To address this, PlayGo offers a ''semantic zoom'' feature. It allows one to zoom-in and zoom-out of the chart, based on custom weights on the chart's elements (messages, conditions, etc.).&lt;br /&gt;
&lt;br /&gt;
Zooming in and out reveals and hides chart elements.  Hidden elements are replaced with a placeholder, to allows the user to understand the context of the remaining elements. Consecutive placeholders are merged into a single, darker-colored placeholder. Effectively, the user can view the most important elements that fit on the screen, while the placeholders hint at the missing information.&lt;br /&gt;
&lt;br /&gt;
In different contexts, different chart elements may be considered more important than others.  Thus, the custom weights of the elements are calculated according to the task at hand (debugging, understanding inter-dependencies, etc.).  The user can choose a strategy to use for calculating the weights.&lt;br /&gt;
&lt;br /&gt;
Semantic zoom in PlayGo is described in &amp;lt;ref&amp;gt;M. Gordon and D. Harel, &amp;quot;Semantic Navigation Strategies for Scenario-Based Programming&amp;quot;, Proc. IEEE Symp. on Visual Languages and Human-Centric Computing (VL/HCC 2010), 2010, pp.219-226.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:ATM.ZoomOut.png|500px]] [[Image: ATM.png ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 1: On the right, the full LSC. On the left, a zoomed-out view. Note the gray scale placeholders, which hide LSC elements. The darker it is, the more elements it hides.&amp;lt;br&amp;gt; The green dotted ellipse marks the most recent placeholder that was added or changed during zoom-out. &amp;lt;br&amp;gt; When zooming in, the last added element is marked with this green dotted ellipse.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=dDSszMjanXs Watch a Semantic Zoom demo]&lt;br /&gt;
&lt;br /&gt;
== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo supports a number of ways to define LSCs: manual editing, play-in, natural language play-in and show &amp;amp;amp; tell.&lt;br /&gt;
&lt;br /&gt;
Natural language play-in allows the user to create LSCs through a natural language textual interface rather than by drawing the elements or interacting with the system.&lt;br /&gt;
&lt;br /&gt;
The language is controlled and structured English fragment accepted by a CFG parser especially developed for the semantics of LSCs. It allows writing requirements in separate sentences and parsing them into LSCs that can be later executed. Here are two examples of requirements:&lt;br /&gt;
&lt;br /&gt;
#''when the user presses the d button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time''&lt;br /&gt;
#''when the user presses the a button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time''&lt;br /&gt;
&lt;br /&gt;
The language is domain-general, and uses the wordnet dictionary &amp;lt;ref&amp;gt; Princeton University &amp;quot;About WordNet.&amp;quot; WordNet. Princeton University. 2010. [http://wordnet.princeton.edu wordnet] &amp;lt;/ref&amp;gt; to decide which part of speech is to be used (e.g., noun, verb, adjective, etc.) and what element in the model matches each word. The user can disambiguate terms where necessary, and the selections are persistent for the model, assuming the writer refers to the same objects / actions using the same words.&lt;br /&gt;
&lt;br /&gt;
Natural language play-in is described in &amp;lt;ref&amp;gt; M. Gordon and D. Harel, &amp;quot;Generating Executable Scenarios from Natural Language&amp;quot;, Proc. 10th Int. Conf. on Comput. Linguistics and Intelligent Text Processing (CICLing'09),  Lecture Notes In Computer Science, vol. 5449. Springer-Verlag, Berlin, Heidelberg, 2009, pp. 456-467.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More about [http://www.weizmann.ac.il/mediawiki/playgo/index.php/How_to_Play-In#Natural_language_play-in How to Play-In with NL]&lt;br /&gt;
&lt;br /&gt;
== Show &amp;amp;amp; tell play-in  ==&lt;br /&gt;
&lt;br /&gt;
Show &amp;amp;amp; Tell is a play-in feature that allows the user to create LSCs through a natural language textual interface combined with the classical play-in technique of interacting with the GUI of the system.&lt;br /&gt;
&lt;br /&gt;
The 'TELL' part is based on natural language play-in; see above.&lt;br /&gt;
&lt;br /&gt;
The 'SHOW' part allows the user to point at or manipulate objects in the GUI or the [[Language &amp;amp; Concepts#System_Model|System Model]] in order to create parts of the LSC. A description of the recorded interaction is first added to the requirements text, and when the user approves it the LSC is created.&lt;br /&gt;
&lt;br /&gt;
The interaction is interpreted according to the action performed by the user and the current parsing state for the entered text at the time of interaction.  The user can click on a button and refer to its name, or drag a slider and refer to the drag operation.&lt;br /&gt;
&lt;br /&gt;
For example, if the state of the textual part is &amp;quot;when the user clicks...&amp;quot; and the user clicks the cancel button, the suggested addition to the text will be &amp;quot;the cancel-button&amp;quot;. However, if the state of the text is &amp;quot;when ...&amp;quot;, with the same interaction, the suggested addition to the text will be &amp;quot;the user clicks the cancel-button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The parsing is performed online using an active chart parser, and the show &amp;amp;amp; tell algorithm tests possible completions for the incompleted parse and finds the best fit and longest possible addition. If more than one possible addition exists, the user is prompted to choose from a list of the possibilities.&lt;br /&gt;
&lt;br /&gt;
Show &amp;amp;amp; tell is described in &amp;lt;ref&amp;gt;M. Gordon, D. Harel, &amp;quot;Show-and-Tell Play-In: Combining Natural Language with User Interaction for Specifying Behavior&amp;quot;, Proc. IADIS Interfaces and Human Computer Interaction 2011 (IHCI 2011), pp. 360-364.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[http://www.wisdom.weizmann.ac.il/~michalk/Projects/SaT/ More about show &amp;amp;amp; tell]&lt;br /&gt;
&lt;br /&gt;
== Trace exploration and visualization ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides ways to explore and visualize traces of LSC executions. A trace log may be generated during play-out and it can then be visually explored using the [http://www.weizmann.ac.il/mediawiki/playgo/index.php/The_Tracer Tracer] and the [http://www.cs.bgu.ac.il/~geraw/SupWebSite/ TraceVis] tools.&lt;br /&gt;
&lt;br /&gt;
The Tracer is described in &amp;lt;ref&amp;gt; S. Maoz and D. Harel, &amp;quot;On Tracing Reactive Systems&amp;quot;, Software and System Modeling (SoSyM), 10(4): 447-468 (2011)&amp;lt;/ref&amp;gt;.  TraceVis is described in &amp;lt;ref&amp;gt;N. Eitan, M. Gordon, D. Harel, A. Marron and G. Weiss, &amp;quot;On Visualization and Comprehension of Scenario-Based Programs&amp;quot;, Proc. 19th Int. Conf. on Program Comprehension (ICPC), 2011, pp. 189-192.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tracer.png|800px|A trace of a pacman game in the Tracer tool]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 2: A trace of a pacman game in the Tracer tool.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:TraceVis.png|800px|A trace of a pacman game in the TraceVis]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 3: A trace of a pacman game in the TraceVis.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scenario inter-dependency visualization  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides a graph-based visualization of inter-dependencies between LSCs.&lt;br /&gt;
&lt;br /&gt;
[[Image:SIVExample.png|800px|Scenario inter-dependency visualization]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 4: Scenario inter-dependency visualization of an ATM model. Dependencies of three types are shown.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each LSC is represented by a node. Edges represent various kinds of inter-dependencies between the LSCs. There are three kinds of inter-dependencies that the graph visualizes:&lt;br /&gt;
&lt;br /&gt;
#Causal edge: A directed edge that represents a message in execution mode in the source LSC being potentially unifiable with a message in monitor mode in the target LSC. This edge type represents the possibility that, during runtime, the source LSC might trigger the target LSC. Causal edges are denoted by brown directed arrows.&lt;br /&gt;
#Sync edge: An undirected edge that represents a message in execution mode in one LSC being potentially unifiable with a message in execution mode in the other. This edge type represents the possibility that two LSCs might have to synchronize their execution. Sync edges are undirected and are denoted by green lines.&lt;br /&gt;
#Shared object edge: An undirected edge that represents that the two LSCs containing lifelines of the same object. Shared object edges are undirected and are denoted by purple lines.&lt;br /&gt;
&lt;br /&gt;
The graph-based visualization of inter-dependencies was presented in &amp;lt;ref&amp;gt;D. Harel and I. Segall, &amp;quot;Visualizing Inter-Dependencies Between Scenarios&amp;quot;, Proc. ACM Symp. on Software Visualization (SOFTVIS'08), 2008, pp. 145-153.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Composition ==&lt;br /&gt;
PlayGo supports the notion of object composition in scenario-based specifications. Roughly, in order to deal with object composition, the LSC language is extended with appropriate syntax and semantics that allow the specification and interpretation of scenario hierarchies – trees of scenarios – based on the object composition hierarchy in the underlying model. Object composition for LSC is described in &amp;lt;ref&amp;gt;Y. Atir, D. Harel, A. Kleinbort, and S. Maoz, &amp;quot;Object Composition in Scenario-Based Programming&amp;quot;, FASE 2008, pp. 301-316.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Polymorphism==&lt;br /&gt;
&lt;br /&gt;
PlayGo supports an extended, polymorphic variant of scenario-based specification.  Roughly, lifelines may be marked as symbolic and are labeled with class names rather than specific object names.  In this case, the lifeline is not statically bound to a concrete object.&lt;br /&gt;
Instead, it may dynamically bind, at execution time, to any object of the class or any of its sub classes.  This results in a scenario-based behavioral subtyping mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
Polymorphism is described in &amp;lt;ref&amp;gt;S. Maoz,   Polymorphic Scenario-Based Specification&lt;br /&gt;
Models: Semantics and Applications Software and Systems Modeling (SoSyM), 11 (3), 2012, pp. 327-345.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Java API for LSC Creation  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides a Java API for the purpose of directly coding a non-graphic version of an LSC. Below is a code sample for creating an LSC that describes the basic move of a memory game.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;big&amp;gt;&amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;void createMemoryGameMoveLSC()&lt;br /&gt;
 {&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCInteraction memoryGameMoveLSC = memoryGameCollaboration.createLSC(&amp;quot;MemoryGameMove&amp;quot;);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCLifeline user = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;User&amp;quot;, &amp;quot;User&amp;quot;, LifelineType.USER, Binding.STATIC);&lt;br /&gt;
 LSCLifeline mc1Lifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryCard1&amp;quot;, &amp;quot;MemoryCard&amp;quot;, LifelineType.SYSTEM, Binding.DYNAMIC);&lt;br /&gt;
 LSCLifeline mc2Lifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryCard2&amp;quot;, &amp;quot;MemoryCard&amp;quot;, LifelineType.SYSTEM, Binding.DYNAMIC);&lt;br /&gt;
 LSCLifeline memoryPanelLifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryPanel&amp;quot;, &amp;quot;MemoryPanel&amp;quot;, LifelineType.SYSTEM, Binding.STATIC);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(user, mc1Lifeline, &amp;quot;flipUp&amp;quot;, Temperature.Cold, ExecutionKind.MONITORED);&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(user, mc2Lifeline, &amp;quot;flipUp&amp;quot;, Temperature.Cold, ExecutionKind.MONITORED);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 ArrayList&amp;amp;lt;LSCLifeline&amp;amp;gt; conditionLifelines = new ArrayList&amp;amp;lt;LSCLifeline&amp;amp;gt;();&lt;br /&gt;
 conditionLifelines.add(mc1Lifeline);&lt;br /&gt;
 conditionLifelines.add(mc2Lifeline);&lt;br /&gt;
 conditionLifelines.add(memoryPanelLifeline);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCStateInvariant sync = memoryGameMoveLSC.createLSCSyncConstraint(conditionLifelines);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage&lt;br /&gt;
                  (memoryPanelLifeline, memoryPanelLifeline, &amp;quot;beep&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCStateInvariant condition = memoryGameMoveLSC.createLSCOpaqueCondition&lt;br /&gt;
                  (&amp;quot;!memoryCard1.match(memoryCard2)&amp;quot;, conditionLifelines, &amp;quot;!memoryCard1.match(memoryCard2)&amp;quot;);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(mc1Lifeline, mc1Lifeline, &amp;quot;flipDown&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(mc2Lifeline, mc2Lifeline, &amp;quot;flipDown&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 } &amp;lt;/span&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code represents the LSC shown in the figure below:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|frame|left|An LSC describing the basic rule of a memory game]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Java API|More about Java API]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Feature_List</id>
		<title>PlayGo Feature List</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Feature_List"/>
				<updated>2013-10-22T09:43:21Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Play-out strategies ==&lt;br /&gt;
&lt;br /&gt;
LSC specifications or `programs' may be underspecified, since the language allows various kinds of non-determinism.  Thus, a special mechanism is needed in order to execute LSC programs.  This execution mechanism is generically termed [[Language_%26_Concepts#Play-Out |''play-out'']].  The core of the [[Language_%26_Concepts#Play-Out|play-out]] process is a strategy mechanism that is responsible for choosing the next method to execute.  The choice is based on the specification and the current state of the system.&lt;br /&gt;
&lt;br /&gt;
Different kinds of play-out mechanisms may be defined.  Each may be viewed as a different operational semantics for LSC.&lt;br /&gt;
&lt;br /&gt;
PlayGo uses a [http://en.wikipedia.org/wiki/Strategy_pattern strategy pattern] to allow the definition, implementation, and use of new, user-defined play-out strategies.  It also includes several built-in, pre-defined play-out strategies, which we now describe.&lt;br /&gt;
&lt;br /&gt;
=== Naïve play-out ===&lt;br /&gt;
&lt;br /&gt;
The ''naïve play-out'' strategy is the simplest one.  It arbitrarily chooses a non-violating method from among the current set of methods that are enabled for execution in at least one chart, but which are not violating in any chart.&lt;br /&gt;
&lt;br /&gt;
=== Random  play-out===&lt;br /&gt;
&lt;br /&gt;
The ''random play-out'' strategy is similar to the naïve play-out strategy. However, it chooses the next method to execute randomly, using a 'seed' number. The user can either choose a constant seed, in which case the same method will be selected in repeated runs, or ask PlayGo to use random seed, thus causing different, random method selection in each run.&lt;br /&gt;
&lt;br /&gt;
=== Interactive play-out ===&lt;br /&gt;
&lt;br /&gt;
The ''interactive play-out'' strategy allows the user to choose the next method to execute. The user is presented with a dialog that lists all the currently enabled non-violating methods and is expected to select one of them. The selected method is returned to the play-out mechanism for execution.&lt;br /&gt;
&lt;br /&gt;
=== Smart play-out ===&lt;br /&gt;
&lt;br /&gt;
''Smart play-out'' is a smarter, safer way of choosing the next method to execute. It considers not only the current set of enabled non-violating methods, but also looks ahead and picks up a finite sequence of methods that will lead to a successful (non-violating) [[LSC Reference#Super_Step|superstep]], if any such sequence exists.&lt;br /&gt;
&lt;br /&gt;
To compute a safe superstep, PlayGo uses model-checking techniques.&lt;br /&gt;
This is done by challenging the model checker to prove that there is no superstep that can take place without violating the LSC specification. If no such superstep exists, there is no way to proceed. But if there is such a superstep, the model checker provides it as a counter-example. PlayGo uses the counter-example to guide the execution.&lt;br /&gt;
&lt;br /&gt;
Smart play-out is implemented in PlayGo using [http://jtlv.ysaar.net/ JTLV].&lt;br /&gt;
&lt;br /&gt;
Smart play-out was first described in &amp;lt;ref&amp;gt; D. Harel, H. Kugler, R. Marelly and A. Pnueli, &amp;quot;Smart Play-Out of Behavioral Requirements&amp;quot;, Proc. 4th Int. Conf. on Formal Methods in Computer-Aided Design (FMCAD 2002), November 2002, pp. 378-398.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Synthesis  ===&lt;br /&gt;
&lt;br /&gt;
Looking one superstep forward, as is done in the smart play-out&lt;br /&gt;
strategy, may not be enough, because a safe superstep does not&lt;br /&gt;
guarantee future execution free of dead locks.  An adverse environment may&lt;br /&gt;
be able to cause the system to fail in satisfying the requirements.&lt;br /&gt;
Thus, PlayGo offers another strategy, based on the technology of&lt;br /&gt;
''controller synthesis''. Controller synthesis takes the LSC&lt;br /&gt;
specification and attempts to compute a controller whose behavior is guaranteed&lt;br /&gt;
to satisfy the requirements set by the specification. The computed controller is then used to guide the&lt;br /&gt;
play-out mechanism. For the case where the LSC specification is&lt;br /&gt;
unrealizable and a controller cannot be synthesized, PlayGo offers a&lt;br /&gt;
debugging mode termed [[PlayGo_Feature_List#Counter_play-out | counter play-out]].&lt;br /&gt;
&lt;br /&gt;
Synthesis for LSC was first described in &amp;lt;ref&amp;gt;D. Harel and H. Kugler,&lt;br /&gt;
“Synthesizing state-based object systems from LSC specifications,”&lt;br /&gt;
Int. J. Found. Comput. Sci.,vol. 13, no. 1, pp. 5–51, 2002&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The variant of LSC synthesis used in PlayGo is described in &amp;lt;ref&amp;gt;S.&lt;br /&gt;
Maoz and Y. Sa’ar, “Assume-Guarantee Scenarios: Semantics and&lt;br /&gt;
Synthesis,” Proc. 15th Int. Conf. on Model Driven Engineering Languages and Systems (MoDELS), LNCS 7590, pp. 335-351, Springer, 2012&amp;lt;/ref&amp;gt;. This variant is stronger than&lt;br /&gt;
previous variants of LSC synthesis, as it supports environment&lt;br /&gt;
assumptions.  It is implemented using [http://jtlv.ysaar.net/ JTLV],&lt;br /&gt;
following the symbolic fixpoint algorithm described in &amp;lt;ref&amp;gt;N.&lt;br /&gt;
Piterman, A. Pnueli, and Y. Sa’ar, “Synthesis of Reactive(1) Designs,”&lt;br /&gt;
in VMCAI, ser. LNCS, vol. 3855. Springer,2006, pp. 364–380.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Counter play-out ==&lt;br /&gt;
&lt;br /&gt;
An LSC specification may be unrealizable.  That is, if an adverse&lt;br /&gt;
environment can force any possible execution to violate the guarantees&lt;br /&gt;
that the system needs to satisfy, a controller cannot be synthesized.&lt;br /&gt;
&lt;br /&gt;
Counter play-out is an interactive debugging method for unrealizable&lt;br /&gt;
LSC specifications.  When such a specification is&lt;br /&gt;
identified, PlayGo generates a controller that plays the role of the&lt;br /&gt;
environment and lets the engineer play the role of the system. During&lt;br /&gt;
execution, the former chooses environment moves such that the latter&lt;br /&gt;
is forced to eventually fail in satisfying the system's requirements.&lt;br /&gt;
This results in an interactive, guided&lt;br /&gt;
execution, which can lead to the root causes of unrealizability. The&lt;br /&gt;
generated controller constitutes a proof that the specification&lt;br /&gt;
is conflicting and cannot be realized.&lt;br /&gt;
&lt;br /&gt;
Counter play-out is based on a counter strategy, which is computed in&lt;br /&gt;
PlayGo by solving a Rabin game using a symbolic, fixpoint algorithm.&lt;br /&gt;
Counter play-out is described in &amp;lt;ref&amp;gt;S. Maoz and Y. Sa’ar, “Counter&lt;br /&gt;
Play-Out: Executing Unrealizable Scenario-Based Specifications,”&lt;br /&gt;
to appear in ICSE'13 (2013)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Semantic Zoom  ==&lt;br /&gt;
&lt;br /&gt;
Large LSCs are difficult to view and navigate.  To address this, PlayGo offers a ''semantic zoom'' feature. It allows one to zoom-in and zoom-out of the chart, based on custom weights on the chart's elements (messages, conditions, etc.).&lt;br /&gt;
&lt;br /&gt;
Zooming in and out reveals and hides chart elements.  Hidden elements are replaced with a placeholder, to allows the user to understand the context of the remaining elements. Consecutive placeholders are merged into a single, darker-colored placeholder. Effectively, the user can view the most important elements that fit on the screen, while the placeholders hint at the missing information.&lt;br /&gt;
&lt;br /&gt;
In different contexts, different chart elements may be considered more important than others.  Thus, the custom weights of the elements are calculated according to the task at hand (debugging, understanding inter-dependencies, etc.).  The user can choose a strategy to use for calculating the weights.&lt;br /&gt;
&lt;br /&gt;
Semantic zoom in PlayGo is described in &amp;lt;ref&amp;gt;M. Gordon and D. Harel, &amp;quot;Semantic Navigation Strategies for Scenario-Based Programming&amp;quot;, Proc. IEEE Symp. on Visual Languages and Human-Centric Computing (VL/HCC 2010), 2010, pp.219-226.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Image:ATM.ZoomOut.png|500px]] [[Image: ATM.png ]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 1: On the right, the full LSC. On the left, a zoomed-out view. Note the gray scale placeholders, which hide LSC elements. The darker it is, the more elements it hides.&amp;lt;br&amp;gt; The green dotted ellipse marks the most recent placeholder that was added or changed during zoom-out. &amp;lt;br&amp;gt; When zooming in, the last added element is marked with this green dotted ellipse.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=dDSszMjanXs Watch a Semantic Zoom demo]&lt;br /&gt;
&lt;br /&gt;
== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo supports a number of ways to define LSCs: manual editing, play-in, natural language play-in and show &amp;amp;amp; tell.&lt;br /&gt;
&lt;br /&gt;
Natural language play-in allows the user to create LSCs through a natural language textual interface rather than by drawing the elements or interacting with the system.&lt;br /&gt;
&lt;br /&gt;
The language is controlled and structured English fragment accepted by a CFG parser especially developed for the semantics of LSCs. It allows writing requirements in separate sentences and parsing them into LSCs that can be later executed. Here are two examples of requirements:&lt;br /&gt;
&lt;br /&gt;
#''when the user presses the d button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time''&lt;br /&gt;
#''when the user presses the a button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time''&lt;br /&gt;
&lt;br /&gt;
The language is domain-general, and uses the wordnet dictionary &amp;lt;ref&amp;gt; Princeton University &amp;quot;About WordNet.&amp;quot; WordNet. Princeton University. 2010. [http://wordnet.princeton.edu wordnet] &amp;lt;/ref&amp;gt; to decide which part of speech is to be used (e.g., noun, verb, adjective, etc.) and what element in the model matches each word. The user can disambiguate terms where necessary, and the selections are persistent for the model, assuming the writer refers to the same objects / actions using the same words.&lt;br /&gt;
&lt;br /&gt;
Natural language play-in is described in &amp;lt;ref&amp;gt; M. Gordon and D. Harel, &amp;quot;Generating Executable Scenarios from Natural Language&amp;quot;, Proc. 10th Int. Conf. on Comput. Linguistics and Intelligent Text Processing (CICLing'09),  Lecture Notes In Computer Science, vol. 5449. Springer-Verlag, Berlin, Heidelberg, 2009, pp. 456-467.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
More about [[http://www.weizmann.ac.il/mediawiki/playgo/index.php/How_to_Play-In [How to Play-In with NL]]&lt;br /&gt;
&lt;br /&gt;
== Show &amp;amp;amp; tell play-in  ==&lt;br /&gt;
&lt;br /&gt;
Show &amp;amp;amp; Tell is a play-in feature that allows the user to create LSCs through a natural language textual interface combined with the classical play-in technique of interacting with the GUI of the system.&lt;br /&gt;
&lt;br /&gt;
The 'TELL' part is based on natural language play-in; see above.&lt;br /&gt;
&lt;br /&gt;
The 'SHOW' part allows the user to point at or manipulate objects in the GUI or the [[Language &amp;amp; Concepts#System_Model|System Model]] in order to create parts of the LSC. A description of the recorded interaction is first added to the requirements text, and when the user approves it the LSC is created.&lt;br /&gt;
&lt;br /&gt;
The interaction is interpreted according to the action performed by the user and the current parsing state for the entered text at the time of interaction.  The user can click on a button and refer to its name, or drag a slider and refer to the drag operation.&lt;br /&gt;
&lt;br /&gt;
For example, if the state of the textual part is &amp;quot;when the user clicks...&amp;quot; and the user clicks the cancel button, the suggested addition to the text will be &amp;quot;the cancel-button&amp;quot;. However, if the state of the text is &amp;quot;when ...&amp;quot;, with the same interaction, the suggested addition to the text will be &amp;quot;the user clicks the cancel-button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The parsing is performed online using an active chart parser, and the show &amp;amp;amp; tell algorithm tests possible completions for the incompleted parse and finds the best fit and longest possible addition. If more than one possible addition exists, the user is prompted to choose from a list of the possibilities.&lt;br /&gt;
&lt;br /&gt;
Show &amp;amp;amp; tell is described in &amp;lt;ref&amp;gt;M. Gordon, D. Harel, &amp;quot;Show-and-Tell Play-In: Combining Natural Language with User Interaction for Specifying Behavior&amp;quot;, Proc. IADIS Interfaces and Human Computer Interaction 2011 (IHCI 2011), pp. 360-364.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[http://www.wisdom.weizmann.ac.il/~michalk/Projects/SaT/ More about show &amp;amp;amp; tell]&lt;br /&gt;
&lt;br /&gt;
== Trace exploration and visualization ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides ways to explore and visualize traces of LSC executions. A trace log may be generated during play-out and it can then be visually explored using the [http://www.weizmann.ac.il/mediawiki/playgo/index.php/The_Tracer Tracer] and the [http://www.cs.bgu.ac.il/~geraw/SupWebSite/ TraceVis] tools.&lt;br /&gt;
&lt;br /&gt;
The Tracer is described in &amp;lt;ref&amp;gt; S. Maoz and D. Harel, &amp;quot;On Tracing Reactive Systems&amp;quot;, Software and System Modeling (SoSyM), 10(4): 447-468 (2011)&amp;lt;/ref&amp;gt;.  TraceVis is described in &amp;lt;ref&amp;gt;N. Eitan, M. Gordon, D. Harel, A. Marron and G. Weiss, &amp;quot;On Visualization and Comprehension of Scenario-Based Programs&amp;quot;, Proc. 19th Int. Conf. on Program Comprehension (ICPC), 2011, pp. 189-192.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tracer.png|800px|A trace of a pacman game in the Tracer tool]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 2: A trace of a pacman game in the Tracer tool.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:TraceVis.png|800px|A trace of a pacman game in the TraceVis]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 3: A trace of a pacman game in the TraceVis.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scenario inter-dependency visualization  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides a graph-based visualization of inter-dependencies between LSCs.&lt;br /&gt;
&lt;br /&gt;
[[Image:SIVExample.png|800px|Scenario inter-dependency visualization]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: smaller;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;Figure 4: Scenario inter-dependency visualization of an ATM model. Dependencies of three types are shown.&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color: rgb(0, 128, 128);&amp;quot;&amp;gt; &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each LSC is represented by a node. Edges represent various kinds of inter-dependencies between the LSCs. There are three kinds of inter-dependencies that the graph visualizes:&lt;br /&gt;
&lt;br /&gt;
#Causal edge: A directed edge that represents a message in execution mode in the source LSC being potentially unifiable with a message in monitor mode in the target LSC. This edge type represents the possibility that, during runtime, the source LSC might trigger the target LSC. Causal edges are denoted by brown directed arrows.&lt;br /&gt;
#Sync edge: An undirected edge that represents a message in execution mode in one LSC being potentially unifiable with a message in execution mode in the other. This edge type represents the possibility that two LSCs might have to synchronize their execution. Sync edges are undirected and are denoted by green lines.&lt;br /&gt;
#Shared object edge: An undirected edge that represents that the two LSCs containing lifelines of the same object. Shared object edges are undirected and are denoted by purple lines.&lt;br /&gt;
&lt;br /&gt;
The graph-based visualization of inter-dependencies was presented in &amp;lt;ref&amp;gt;D. Harel and I. Segall, &amp;quot;Visualizing Inter-Dependencies Between Scenarios&amp;quot;, Proc. ACM Symp. on Software Visualization (SOFTVIS'08), 2008, pp. 145-153.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Composition ==&lt;br /&gt;
PlayGo supports the notion of object composition in scenario-based specifications. Roughly, in order to deal with object composition, the LSC language is extended with appropriate syntax and semantics that allow the specification and interpretation of scenario hierarchies – trees of scenarios – based on the object composition hierarchy in the underlying model. Object composition for LSC is described in &amp;lt;ref&amp;gt;Y. Atir, D. Harel, A. Kleinbort, and S. Maoz, &amp;quot;Object Composition in Scenario-Based Programming&amp;quot;, FASE 2008, pp. 301-316.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Polymorphism==&lt;br /&gt;
&lt;br /&gt;
PlayGo supports an extended, polymorphic variant of scenario-based specification.  Roughly, lifelines may be marked as symbolic and are labeled with class names rather than specific object names.  In this case, the lifeline is not statically bound to a concrete object.&lt;br /&gt;
Instead, it may dynamically bind, at execution time, to any object of the class or any of its sub classes.  This results in a scenario-based behavioral subtyping mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
Polymorphism is described in &amp;lt;ref&amp;gt;S. Maoz,   Polymorphic Scenario-Based Specification&lt;br /&gt;
Models: Semantics and Applications Software and Systems Modeling (SoSyM), 11 (3), 2012, pp. 327-345.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Java API for LSC Creation  ==&lt;br /&gt;
&lt;br /&gt;
PlayGo provides a Java API for the purpose of directly coding a non-graphic version of an LSC. Below is a code sample for creating an LSC that describes the basic move of a memory game.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;&amp;lt;big&amp;gt;&amp;lt;span style=&amp;quot;font-size: larger;&amp;quot;&amp;gt;void createMemoryGameMoveLSC()&lt;br /&gt;
 {&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCInteraction memoryGameMoveLSC = memoryGameCollaboration.createLSC(&amp;quot;MemoryGameMove&amp;quot;);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCLifeline user = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;User&amp;quot;, &amp;quot;User&amp;quot;, LifelineType.USER, Binding.STATIC);&lt;br /&gt;
 LSCLifeline mc1Lifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryCard1&amp;quot;, &amp;quot;MemoryCard&amp;quot;, LifelineType.SYSTEM, Binding.DYNAMIC);&lt;br /&gt;
 LSCLifeline mc2Lifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryCard2&amp;quot;, &amp;quot;MemoryCard&amp;quot;, LifelineType.SYSTEM, Binding.DYNAMIC);&lt;br /&gt;
 LSCLifeline memoryPanelLifeline = memoryGameMoveLSC.createLSCLifeline&lt;br /&gt;
                           (&amp;quot;memoryPanel&amp;quot;, &amp;quot;MemoryPanel&amp;quot;, LifelineType.SYSTEM, Binding.STATIC);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(user, mc1Lifeline, &amp;quot;flipUp&amp;quot;, Temperature.Cold, ExecutionKind.MONITORED);&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(user, mc2Lifeline, &amp;quot;flipUp&amp;quot;, Temperature.Cold, ExecutionKind.MONITORED);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 ArrayList&amp;amp;lt;LSCLifeline&amp;amp;gt; conditionLifelines = new ArrayList&amp;amp;lt;LSCLifeline&amp;amp;gt;();&lt;br /&gt;
 conditionLifelines.add(mc1Lifeline);&lt;br /&gt;
 conditionLifelines.add(mc2Lifeline);&lt;br /&gt;
 conditionLifelines.add(memoryPanelLifeline);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCStateInvariant sync = memoryGameMoveLSC.createLSCSyncConstraint(conditionLifelines);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage&lt;br /&gt;
                  (memoryPanelLifeline, memoryPanelLifeline, &amp;quot;beep&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 LSCStateInvariant condition = memoryGameMoveLSC.createLSCOpaqueCondition&lt;br /&gt;
                  (&amp;quot;!memoryCard1.match(memoryCard2)&amp;quot;, conditionLifelines, &amp;quot;!memoryCard1.match(memoryCard2)&amp;quot;);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(mc1Lifeline, mc1Lifeline, &amp;quot;flipDown&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 memoryGameMoveLSC.createLSCMessage(mc2Lifeline, mc2Lifeline, &amp;quot;flipDown&amp;quot;, Temperature.Hot, ExecutionKind.EXECUTE);&lt;br /&gt;
 &amp;lt;br\&amp;gt;&lt;br /&gt;
 } &amp;lt;/span&amp;gt;&amp;lt;/big&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This code represents the LSC shown in the figure below:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:LSCExample.png|frame|left|An LSC describing the basic rule of a memory game]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Java API|More about Java API]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2013-10-22T09:40:27Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in| natural language (NL) play-in]], you can write scenarios in controlled natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL Rules ===&lt;br /&gt;
The scenarios specified in controlled NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL-Play-In Interface ===&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quick fix mechanism  ===&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''Green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''Red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity, i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''Black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Learn from Examples ===&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Wristwatch_Example wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Chess_Game_Example#Example_1_.28ChessProject_-_chesswithNL.umlseq.29_with_NL-Play-In chess]&lt;br /&gt;
&lt;br /&gt;
== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br&amp;gt;[[Image:Playin.toolbar1.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Insert new LSC elements, such as new LSC, new Instance, Assertion, Assignment etc…&amp;lt;br&amp;gt;[[Image:Playin.toolbar2.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You may want to carry out operations on the GUI without affecting the LSC (e.g., for restoring the GUI to a state from which you want to play in). To do this, press the 'Ignore GUI Play-In' button, next to the 'Play-In Mode' drop-down button, and carry out the required operation. Once done, press the 'Ignore GUI Play-In' button again, to release it (in which case GUI operations will no longer be ignored):&amp;lt;br&amp;gt; [[Image:Playin.ignore.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br&amp;gt; [[Image:Properties.view.rightClickMenu.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2013-10-22T09:40:10Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in| natural language (NL) play-in]], you can write scenarios in controlled natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL Rules ===&lt;br /&gt;
The scenarios specified in controlled NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL-Play-In Interface ==&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quick fix mechanism  ===&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''Green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''Red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity, i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''Black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Learn from Examples ===&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Wristwatch_Example wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Chess_Game_Example#Example_1_.28ChessProject_-_chesswithNL.umlseq.29_with_NL-Play-In chess]&lt;br /&gt;
&lt;br /&gt;
== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br&amp;gt;[[Image:Playin.toolbar1.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Insert new LSC elements, such as new LSC, new Instance, Assertion, Assignment etc…&amp;lt;br&amp;gt;[[Image:Playin.toolbar2.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You may want to carry out operations on the GUI without affecting the LSC (e.g., for restoring the GUI to a state from which you want to play in). To do this, press the 'Ignore GUI Play-In' button, next to the 'Play-In Mode' drop-down button, and carry out the required operation. Once done, press the 'Ignore GUI Play-In' button again, to release it (in which case GUI operations will no longer be ignored):&amp;lt;br&amp;gt; [[Image:Playin.ignore.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br&amp;gt; [[Image:Properties.view.rightClickMenu.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2013-10-22T09:39:44Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in| natural language (NL) play-in]], you can write scenarios in controlled natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NL Rules ===&lt;br /&gt;
The scenarios specified in controlled NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quick fix mechanism  ===&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''Green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''Red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity, i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''Black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Learn from Examples ===&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Wristwatch_Example wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Chess_Game_Example#Example_1_.28ChessProject_-_chesswithNL.umlseq.29_with_NL-Play-In chess]&lt;br /&gt;
&lt;br /&gt;
== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br&amp;gt;[[Image:Playin.toolbar1.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Insert new LSC elements, such as new LSC, new Instance, Assertion, Assignment etc…&amp;lt;br&amp;gt;[[Image:Playin.toolbar2.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You may want to carry out operations on the GUI without affecting the LSC (e.g., for restoring the GUI to a state from which you want to play in). To do this, press the 'Ignore GUI Play-In' button, next to the 'Play-In Mode' drop-down button, and carry out the required operation. Once done, press the 'Ignore GUI Play-In' button again, to release it (in which case GUI operations will no longer be ignored):&amp;lt;br&amp;gt; [[Image:Playin.ignore.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br&amp;gt; [[Image:Properties.view.rightClickMenu.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2013-10-22T09:38:23Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in|natural language (NL) play-in]], you can write scenarios in natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios specified in NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quick fix mechanism  ===&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''Green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''Red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity, i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''Black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Learn from Examples ===&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Wristwatch_Example wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Chess_Game_Example#Example_1_.28ChessProject_-_chesswithNL.umlseq.29_with_NL-Play-In chess]&lt;br /&gt;
&lt;br /&gt;
== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br&amp;gt;[[Image:Playin.toolbar1.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Insert new LSC elements, such as new LSC, new Instance, Assertion, Assignment etc…&amp;lt;br&amp;gt;[[Image:Playin.toolbar2.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You may want to carry out operations on the GUI without affecting the LSC (e.g., for restoring the GUI to a state from which you want to play in). To do this, press the 'Ignore GUI Play-In' button, next to the 'Play-In Mode' drop-down button, and carry out the required operation. Once done, press the 'Ignore GUI Play-In' button again, to release it (in which case GUI operations will no longer be ignored):&amp;lt;br&amp;gt; [[Image:Playin.ignore.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br&amp;gt; [[Image:Properties.view.rightClickMenu.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2013-10-22T09:37:11Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in|natural language (NL) play-in]], you can write scenarios in natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios specified in NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quick fix mechanism  ===&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''Green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''Red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity, i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''Black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Learning from Examples ==&lt;br /&gt;
&lt;br /&gt;
Examples of requirements written in natural language, can be found here:&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Wristwatch_Example wristwatch].&lt;br /&gt;
&lt;br /&gt;
- [http://www.weizmann.ac.il/mediawiki/playgo/index.php/Chess_Game_Example#Example_1_.28ChessProject_-_chesswithNL.umlseq.29_with_NL-Play-In chess]&lt;br /&gt;
&lt;br /&gt;
== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br&amp;gt;[[Image:Playin.toolbar1.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Insert new LSC elements, such as new LSC, new Instance, Assertion, Assignment etc…&amp;lt;br&amp;gt;[[Image:Playin.toolbar2.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You may want to carry out operations on the GUI without affecting the LSC (e.g., for restoring the GUI to a state from which you want to play in). To do this, press the 'Ignore GUI Play-In' button, next to the 'Play-In Mode' drop-down button, and carry out the required operation. Once done, press the 'Ignore GUI Play-In' button again, to release it (in which case GUI operations will no longer be ignored):&amp;lt;br&amp;gt; [[Image:Playin.ignore.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br&amp;gt; [[Image:Properties.view.rightClickMenu.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In</id>
		<title>How to Play In</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=How_to_Play_In"/>
				<updated>2013-10-22T09:36:11Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Natural language play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[PlayGo Feature List#Natural_language_play-in|natural language (NL) play-in]], you can write scenarios in natural language. For example, &amp;quot;When the user clicks the button, the light state turns to on&amp;quot;. NL play-in then creates an LSC for this scenario, and inserts the corresponding entities into the [[Language &amp;amp; Concepts#System_Model|System Model]], if they are not there yet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;[[Image:NL.sentence.png]]&amp;lt;br&amp;gt; &amp;lt;span style=&amp;quot;color: rgb(0,0,255);&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-family: Tahoma;&amp;quot;&amp;gt;NL play-in: the underlined words in the NL sentence entered by the user are translated into the LSC chart and the appropriate System Model entities.&lt;br /&gt;
&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt; &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scenarios specified in NL have to conform to the following rules:&lt;br /&gt;
&lt;br /&gt;
#A scenario must contain exactly one sentence.&lt;br /&gt;
#The sentence should contain a clear subject, verb, object and possibly adjective.These are translated into LSC constructs, such as lifelines, messages, properties and property values.&lt;br /&gt;
#Delimiters, like a comma, or words like 'then' or 'and' after each part of the sentence are important and must be included. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button''',''' the display text changes to Hello&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button '''then''' the display text changes to Hello&amp;quot;&lt;br /&gt;
#Values that are composed from more than one word should appear in double quotes. Single word values can appear without quotes. For example:&lt;br /&gt;
##&amp;quot;when the user clicks the button, the display mode changes to '''alarm'''&amp;quot;&lt;br /&gt;
##&amp;quot;when the user clicks the button, if the display mode is '''&amp;quot;alarm&amp;quot;''', the display mode changes to '''&amp;quot;alarm minutes&amp;quot;&amp;amp;nbsp;'''&amp;quot;&lt;br /&gt;
#Objects and methods cannot consist of more than one word (double quotes will not help here). By default, nouns are understood as objects, and verbs as methods. If there is other information from the system model, it will be integrated (e.g., if there is an object named 'walk', it can be understood as a noun or a verb). Also, non-words are by default nouns and are understood as objects or values. To use a non-word as a different construct, right click the word and set it using the right click menu. In the following example 'ReduceTemp' is not a noun, but rather a method. For the parse to recognize it, right click it, and set it to 'method'.&lt;br /&gt;
##&amp;quot;when the user clicks the button, the manager '''ReduceTemp.&amp;quot;'''&lt;br /&gt;
#Property values can be of type String, Integer or Boolean, and are inferred either automatically or by the programmer using the [[#Quick_Fix_Mechanism|quick fix]] mechanism.&lt;br /&gt;
#To refer to a specific object, use 'the'. To refer to a non-specific object, use 'a' or 'any'. For example:&lt;br /&gt;
##&amp;quot;when the user clicks '''the''' A_button, the display text changes to &amp;quot;Button A was clicked&amp;quot; &amp;quot;. This will create a static object 'A_button'.&lt;br /&gt;
##&amp;quot;when the user clicks '''a''' button, the button state changes to on&amp;quot;. This will create a dynamic object 'button' that will bind at run time when clicked.&lt;br /&gt;
#If the NL refers to an object that already appears in the system model, the exact name of the object should be used, as it appears in the system model.&lt;br /&gt;
#Two basic phrases that add LSC constructs are a property change of an object and a method call.&lt;br /&gt;
##A sentence that describes a property that changes should include the &amp;amp;lt;object name&amp;amp;gt;, the &amp;amp;lt;property name&amp;amp;gt; and optionally the &amp;amp;lt;new value&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the light state changes to on&amp;quot; &amp;amp;nbsp;(light.state = on).&lt;br /&gt;
###&amp;quot;when ..., the display color changes to the selection color&amp;quot; (display.color = selection.color).&lt;br /&gt;
###&amp;quot;when the light state changes, the ...&amp;quot; (the trigger is a change of the value to anything. light.state = *).&amp;amp;nbsp;&lt;br /&gt;
###A bad example is: &amp;quot;when ..., the light turns on&amp;quot;, since &amp;quot;turns&amp;quot; is not recognized as a method. However, setting &amp;quot;turns&amp;quot; explicitly as a method, will make this sentence work, but it will generate a method call, e.g., light.turns(on), rather than the change of a property.&lt;br /&gt;
##A sentence that describes a method call should include the &amp;amp;lt;object name&amp;amp;gt; and the &amp;amp;lt;method call&amp;amp;gt;. For example:&lt;br /&gt;
###&amp;quot;when ..., the panel locks&amp;quot; (panel.lock()).&lt;br /&gt;
###&amp;quot;when the user clicks the button, ...&amp;quot; (button.click() triggered by the User source object).&lt;br /&gt;
###&amp;quot;when the dispenser makes tea, ...&amp;quot; (dispenser.make(tea)).&lt;br /&gt;
###A bad example is: &amp;quot;the heater temperature increases&amp;quot;, since the heater.temperature is a property and cannot call the increase method.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To use [[PlayGo Feature List#Natural_language_play-in|NL play-in]], [[Create an LSC project|create an LSC project]], or select an existing one, and click the 'NL Play-In' button.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will cause the play-in session to start, and the 'NL Play-In' view will open. To play in, enter LSC name and the requirement: &amp;lt;br&amp;gt;[[Image:NL.play-in.view.overview.png|800px]]&lt;br /&gt;
&lt;br /&gt;
*'''LSC Name''' - the name of the LSC currently being played in.&lt;br /&gt;
*'''Requirement Text''' - the NL sentence defining the LSC.&lt;br /&gt;
*'''Add LSC''' - click this button to create the LSC when the requirement is complete.&lt;br /&gt;
*'''Online Parsing''' - this is a toggle button. When selected the text is parsed after each space entered. Otherwise, the text is parsed only when pressing Enter.&lt;br /&gt;
*'''Interact Enabled''' - this is a toggle button. When selected, interaction with the application GUI is interpreted as an NL snippet&amp;amp;nbsp;by the Show &amp;amp;amp; Tell play-in module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quick fix mechanism  ===&lt;br /&gt;
&lt;br /&gt;
When NL play-in identifies problems in the requirement text, it activates a quick fix mechanism to mark them using a squiggly line and to prompt the user to fix them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;green&amp;quot;&amp;gt;'''Green'''&amp;lt;/font&amp;gt; squiggly line indicates a model warning or missing information. In some cases NL assigns defaults when information is missing. &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.model.error.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information on the error, hover over the underlined words with the mouse and a quickfix box will appear, describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect:&amp;lt;br&amp;gt; [[Image:NL.model.error.quickFix.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;'''Red'''&amp;lt;/font&amp;gt; squiggly line indicates an ambiguity, i.e., that there is more than one possible parse for the sentence. The user should disambiguate by selecting one of the offered possibilities. The selection can obviously have a significant effect on the created LSC. &amp;lt;br&amp;gt; &amp;lt;br&amp;gt; [[Image:NL.ambiguity.error.png|800px]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get more information about the error, hover over the underlined words with the mouse and a quickfix box will appear describing the problem and offering possible solutions when they exist.&lt;br /&gt;
&lt;br /&gt;
To select a solution, click on it and it will take effect. If no solution appears, or if you would like a different option from those appearing in the menu, edit the text to fix it yourself:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Playin.view.ambigous.png|800px]]&amp;lt;span style=&amp;quot;line-height: 1.5em;&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A '''Black''' squiggly line indicates a grammatical error, which must be fixed before continuing. In most cases, this involves incorrect grammar, a missing determinant, or words that are misspelled or not-recognized. No spell checking is applied in the current implementation. In the example below, the error is caused by the unrecognized word &amp;quot;doubleClicks&amp;quot;: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To fix a grammatical error, look for the missing determinant and correct the sentence. In case of an unrecognized word, select the word by double-clicking it, then right-click it and select the relevant alternative to define and insert the word into the system model as an object, property, method or value: &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:NL.grammer.error.quickFix.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once the errors are fixed, you can create the LSC by pressing ENTER, or by clicking the [[Image:NL.plus.jpg]] button at the view toolbar:&lt;br /&gt;
&lt;br /&gt;
[[Image:NL.play-in.view+.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Examples of requirements written in natural language, can be found here:[http://www.weizmann.ac.il/mediawiki/playgo/index.php/Wristwatch_Example wristwatch].&lt;br /&gt;
[http://www.weizmann.ac.il/mediawiki/playgo/index.php/Chess_Game_Example#Example_1_.28ChessProject_-_chesswithNL.umlseq.29_with_NL-Play-In chess]&lt;br /&gt;
&lt;br /&gt;
== Basic play-in ==&lt;br /&gt;
&lt;br /&gt;
To use [[Language &amp;amp; Concepts#Play-In|Basic play-in]], click the 'Basic Play-In' button.&amp;lt;br&amp;gt; [[Image:NL.play-in.start.png|800px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consequently, the play-in session starts. If a GUI exists it is launched, from which you can start play-in:&lt;br /&gt;
&lt;br /&gt;
*Clicking an object in the GUI creates a diagram snippet reflecting the click.&lt;br /&gt;
*Use the Play-In toolbar to control some of the play-in operations, such as applying modality (hot/cold, monitor/execute):&amp;lt;br&amp;gt;[[Image:Playin.toolbar1.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Insert new LSC elements, such as new LSC, new Instance, Assertion, Assignment etc…&amp;lt;br&amp;gt;[[Image:Playin.toolbar2.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*You may want to carry out operations on the GUI without affecting the LSC (e.g., for restoring the GUI to a state from which you want to play in). To do this, press the 'Ignore GUI Play-In' button, next to the 'Play-In Mode' drop-down button, and carry out the required operation. Once done, press the 'Ignore GUI Play-In' button again, to release it (in which case GUI operations will no longer be ignored):&amp;lt;br&amp;gt; [[Image:Playin.ignore.JPG|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Once created, LSC construct properties can be modified via the properties view and the right-click menu:&amp;lt;br&amp;gt; [[Image:Properties.view.rightClickMenu.png|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== System model play-in  ==&lt;br /&gt;
&lt;br /&gt;
With [[Language &amp;amp; Concepts#System_Model|system model]] play-in, you can enter scenarios by selecting an object from the system model, right-clicking it and selecting the required operation. For example, to add an event from the user to an object, right-click the corresponding object's method and select 'Call Message'. As a result, the corresponding LSC snippet will be created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.playin.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To play in from the system model, [[Create an LSC project|create an LSC project]], or select an existing one. In either case, the LSC project has to have a system model. If it doesn't, [[How to create a system model|create a system model]] and click the 'Basic Play-In' button to start playing in:&lt;br /&gt;
&lt;br /&gt;
[[Image:BasicPlayIn.png|800px]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will be prompted to select a specification file name and location:&lt;br /&gt;
&lt;br /&gt;
[[Image:SpecFile.png]]&lt;br /&gt;
&lt;br /&gt;
*Note that you can play in from the system model also using the 'NL Play-In' and 'Show &amp;amp;amp; Tell Play-in' alternatives.&lt;br /&gt;
&lt;br /&gt;
=== Common operations  ===&lt;br /&gt;
&lt;br /&gt;
To add a message from the user to a system object, first make sure the 'Play-In Mode' is set to 'User'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.createMessage.fromUser.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a self message (from an object to itself), change the 'Play-In Mode' to 'System'. Then, right-click a method of an object and select 'Call Message'. If the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:SystemModel.callMessage.self.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To add a message from one object to another, right-click the source object and select 'Call Other Object'. Then, right-click a method of the target object and select 'Call Message'. Once again, if the message requires input parameters, the [[Play-in view|'Play-In' view]] will open, prompting the user to add the required message parameters:&lt;br /&gt;
&lt;br /&gt;
[[Image:Systemmodel.callotherobj.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; [[Image:Systemmodel.createMessage.png|800px]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-10-22T09:34:06Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example.&lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. The chess game has many rules and these are implemented in this example, see [[http://en.wikipedia.org/wiki/Chess chess]]. The games interface is implemented through mouse clicks on the game pieces and the chess board's squares. A click on a square highlights valid user moves for the selected piece. The game GUI is implemented with SWT, and the game behavior is implemented with LSCs. &lt;br /&gt;
This example demonstrates LSCs creation in two different ways, which also generates different LSCs:&lt;br /&gt;
(1)using the natural language interface to LSCs (NL-Play-In) and (2) using the editor. &lt;br /&gt;
We also discuss some of the differences between the approaches.&lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessGUIScreenShot.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example 1 (ChessProject - chesswithNL.umlseq) with NL-Play-In ==&lt;br /&gt;
&lt;br /&gt;
The LSCs in this section were created with the [[PlayGo Feature List#Natural_language_play-in|NL-Play-In]]. The natural language text was parsed automatically to create the LSC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| SelectSource&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectSource.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SetPossiblePosition&lt;br /&gt;
| when any Square selectSource then the Square setPossibleSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SetPossiblePositionNL.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SelectTarget&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CheckPossibility&lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MovePiece&lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:MoveSource.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChangeTurn&lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurn&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurn2&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ResetBoard&lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| checkmate&lt;br /&gt;
| when any Square MovePiece then the Square check_CheckMate &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:Checkmate-NL.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| BlkKingPosition.png&lt;br /&gt;
| when any square MovePiece, if the square piecename is &amp;quot;blkking&amp;quot; then the board BlkkingPosition changes to the square position&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:BlkKingPosition.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WteKingPosition&lt;br /&gt;
| when any square MovePiece, if the square piecename is &amp;quot;wteking&amp;quot; then the board WtekingPosition changes to the square position &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WteKingPosition.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Newgame&lt;br /&gt;
| when the user click the newgame then the newgame loadnewgame and the board reset &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:NewGame.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowScoreblack&lt;br /&gt;
| when the board state change then the BlkScore show the board blackPoint &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ShowScoreblack.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowScorewhite&lt;br /&gt;
| when the board state change then the WteScore show the board whitePoint &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ShowScorewhite.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowNextTurn&lt;br /&gt;
| when the board state change then the NextTurndisplay show the board state &amp;amp;nbsp;&lt;br /&gt;
| [[Image:ShowNextTurn.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ResetPossiblePosition&lt;br /&gt;
| when any Square selectTarget then the Square reset &amp;amp;nbsp;&lt;br /&gt;
| [[Image:ResrPossiblePositionNL.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurnReset&lt;br /&gt;
| when any Square showMessage then the Square reset &amp;amp;nbsp;&lt;br /&gt;
| [[Image:WrongTurnReset.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
=== Download the ChessProject Example  ===&lt;br /&gt;
&lt;br /&gt;
Below are links for downloading the ChessProject final application, as well as of the LSC project that can be opened and modified in PlayGo.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ChessProject final application (runnable jar) ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessProjectSwingGUI.zip|Runnable ChessProject with Swing GUI]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To run the ChessProject, simply extract the downloaded zip and double click the jar file.&amp;lt;br&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==== ChessProject LSC project ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessProject.zip|TheChessProject LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Installation Instructions =====&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace.&lt;br /&gt;
##Click the 'Next' button.&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded ChessProject example.&lt;br /&gt;
##Click finish.&lt;br /&gt;
#The ChessProject example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]].&lt;br /&gt;
&lt;br /&gt;
== Example 2 (ChessGame - square.umlseq)  ==&lt;br /&gt;
&lt;br /&gt;
The following LSCs where created with the use of the editor. &lt;br /&gt;
Our intention was to create a specification with more than one symbolic lifeline in the LSCs, which was not supported by NL-Play-In, and possibly more than one monitored event at the chart start.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| PieceClick&lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type and if the Sq1 is a source then the square Sq1 check_Move square Sq2.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ClickonPiece.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MovePiece&lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2.&lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece&lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2.&lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| NextMove&lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;.&lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| SetSource&lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ShowMessage&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ShowMessageReset&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ResetPossiblePosition&lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1.&lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| CheckMate&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, then isCheck is assigned whether there is any checkmate, if the checkmate is true then the square show the checkmate otherwise square removecheckmate.&lt;br /&gt;
| [[Image:Checkmate.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| kingposition&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the Sq2 piecname is wteking then the Sq1 removecheckMate and the board wtekingposition is set to the Sq2 position else if the Sq2 piecname is blkking then the Sq1 removecheckMate and the board blkkingposition is set to the Sq2 position .&lt;br /&gt;
| [[Image:Kingposition.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| showturn&lt;br /&gt;
| When the board set the Next_turn to any then the NextTurn show the board Next turn.&lt;br /&gt;
| [[Image:Showturn.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| BlackPiecepoint&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the board Next_turn is white then the blk_score show the black point.&lt;br /&gt;
| [[Image:Blackpiecepoint.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| WhitePiecepoint&lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the board Next_turn is black then the wte_score show the white point.&lt;br /&gt;
| [[Image:Whitepiecepoint.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| GameOver&lt;br /&gt;
| When the any square Sq1 movePiece to any square Sq2, if the board black point is 0 then the white won the game otherwise if the board white point is 0 then the black won the game&lt;br /&gt;
| [[Image:GameOver.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Loadgame&lt;br /&gt;
| when the user click NewGame then the NewGame load new game&lt;br /&gt;
| [[Image:LoadGame.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Download the ChessGame Example  ===&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the ChessGame final application, as well as of the LSC project that can be opened and modified in PlayGo.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ChessGame final application (runnable jar) ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessGameSwingGUI.zip|Runnable Chess Game with Swing GUI]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To run the ChessGame, simply extract the downloaded zip and double click the jar file.&amp;lt;br&amp;gt; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
==== ChessGame LSC project ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessGame.zip|The ChessGame LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Installation Instructions =====&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace.&lt;br /&gt;
##Click the 'Next' button.&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded ChessGame example.&lt;br /&gt;
##Click finish.&lt;br /&gt;
#The ChessGame example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections  ==&lt;br /&gt;
&lt;br /&gt;
'''Example1-ChessProject'''&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;[[Image:SivChessGame.png|SIV Graph]]&amp;lt;br&amp;gt; Dependency graph for Example 1. This graph shows clusters (communities). And MovePiece is selected here and the connected LSCs are colored (blue or pink). Green edges are unified messages between LSCs. &amp;lt;br&amp;gt;See [[http://www.weizmann.ac.il/mediawiki/harelgroup/index.php/SIV_Plugin | SIV-Plugin]] for details. &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; '''Example2-ChessGame'''&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;[[Image:ChessSIV-example2.png|SIV Graph]]&amp;lt;br&amp;gt; Dependency graph for Example 2. This graph also shows clusters (communities). And MovePiece is selected here and the connected LSCs are colored (blue or pink). Green edges are unified messages between LSCs.&amp;lt;br&amp;gt; Note: messages were unified here regardless of the parameters, since parameters are symbolic, e.g., MovePiece(String piecename). &amp;lt;br&amp;gt;see[[http://www.weizmann.ac.il/mediawiki/harelgroup/index.php/SIV_Plugin | SIV-Plugin]] for details&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; General observations: Both seem plausible, although they are a bit different.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== SystemModel  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; Example1-ChessProject&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:ChessProjectSystemModel.png|SystemModel]] &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; Example2-ChessGame&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:ChessGameSystemmodel.png|System Model]] &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example 3 - a non working LSC  ==&lt;br /&gt;
&lt;br /&gt;
In this example, we demonstrate an LSC created, that seems to work, but will not work due to an unbound lifeline.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight&lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight.&lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Since Sq2 is dynamic and there are more highlighted squares it leads to the universal binding, not implemented in PlayGo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
== Discussion == &lt;br /&gt;
&lt;br /&gt;
We show here two very different ways to implement the same behavior using LSCs. &lt;br /&gt;
The examples demonstrate that various LSC methods can apply.&lt;br /&gt;
The third example demonstrates that it is necessary to have some understanding of symbolic objects and binding to create an executable model.&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-07-31T09:57:03Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example. &lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. The chess game has many rules and these are implemented in this example, see [[http://en.wikipedia.org/wiki/Chess chess]]. The games interface is throught mouse clicks on the game pieces and the chess board's squares. A click on a square highlights valid user moves for the selected piece. The game is implemented with LSCs. Since LSCs can created in different ways, this example presents requirements created in two ways: one using the natural language interface to LSCs (NL-Play-In) and the other using the editor. We also review the differences between the approaches. &lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessGUIScreenShot.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Example 1 (ChessProject - chesswithNL.umlseq) with NL-Play-In ==&lt;br /&gt;
&lt;br /&gt;
The LSCs in this section were created with the [[PlayGo Feature List#Natural_language_play-in|NL-Play-In]]. The natural language text was parsed automatically to create the LSC. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| SelectSource &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectSource.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SetPossiblePosition &lt;br /&gt;
| when any Square selectSource then the Square setPossibleSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SetPossiblePositionNL.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| SelectTarget &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| CheckPossibility &lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MovePiece &lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:MoveSource.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChangeTurn &lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurn &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurn2 &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ResetBoard &lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| checkmate &lt;br /&gt;
| when any Square MovePiece then the Square check_CheckMate &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:Checkmate-NL.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| BlkKingPosition.png &lt;br /&gt;
| when any square MovePiece, if the square piecename is &amp;quot;blkking&amp;quot; then the board BlkkingPosition changes to the square position&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:BlkKingPosition.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| WteKingPosition &lt;br /&gt;
| when any square MovePiece, if the square piecename is &amp;quot;wteking&amp;quot; then the board WtekingPosition changes to the square position &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WteKingPosition.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Newgame &lt;br /&gt;
| when the user click the newgame then the newgame loadnewgame and the board reset &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:NewGame.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowScoreblack &lt;br /&gt;
| when the board state change then the BlkScore show the board blackPoint &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:ShowScoreblack.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowScorewhite &lt;br /&gt;
| when the board state change then the WteScore show the board whitePoint &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:ShowScorewhite.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ShowNextTurn &lt;br /&gt;
| when the board state change then the NextTurndisplay show the board state &amp;amp;nbsp; &lt;br /&gt;
| [[Image:ShowNextTurn.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ResetPossiblePosition &lt;br /&gt;
| when any Square selectTarget then the Square reset &amp;amp;nbsp; &lt;br /&gt;
| [[Image:ResrPossiblePositionNL.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| WrongTurnReset &lt;br /&gt;
| when any Square showMessage then the Square reset &amp;amp;nbsp; &lt;br /&gt;
| [[Image:WrongTurnReset.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
=== Download the ChessProject Example  ===&lt;br /&gt;
&lt;br /&gt;
Below are links for downloading the ChessProject final application, as well as of the LSC project that can be opened and modified in PlayGo.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== ChessProject final application (runnable jar) ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessProjectSwingGUI.zip|Runnable ChessProject with Swing GUI]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To run the ChessProject, simply extract the downloaded zip and double click the jar file.&amp;lt;br&amp;gt; &amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
==== ChessProject LSC project ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessProject.zip|TheChessProject LSC Project (for development purposes)]] &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===== Installation Instructions =====&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded zip. &lt;br /&gt;
#[[Download PlayGo|Download PlayGo]]. &lt;br /&gt;
#Import the downloaded project to your workspace: &lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace. &lt;br /&gt;
##Click the 'Next' button. &lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded ChessProject example. &lt;br /&gt;
##Click finish. &lt;br /&gt;
#The ChessProject example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]].&lt;br /&gt;
&lt;br /&gt;
== Example 2 (ChessGame - square.umlseq)  ==&lt;br /&gt;
&lt;br /&gt;
The following LSCs where created with the use of the editor. Our intention was to create a specification with more than one symbolic lifeline in the LSCs and possibly more than one monitored event at the chart start. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| PieceClick &lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type and if the Sq1 is a source then the square Sq1 check_Move square Sq2.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:ClickonPiece.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| MovePiece &lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2. &lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece &lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2. &lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| NextMove &lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;. &lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| SetSource &lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ShowMessage &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ShowMessageReset &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| ResetPossiblePosition &lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1. &lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| CheckMate &lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, then isCheck is assigned whether there is any checkmate, if the checkmate is true then the square show the checkmate otherwise square removecheckmate. &lt;br /&gt;
| [[Image:Checkmate.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| kingposition &lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the Sq2 piecname is wteking then the Sq1 removecheckMate and the board wtekingposition is set to the Sq2 position else if the Sq2 piecname is blkking then the Sq1 removecheckMate and the board blkkingposition is set to the Sq2 position . &lt;br /&gt;
| [[Image:Kingposition.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| showturn &lt;br /&gt;
| When the board set the Next_turn to any then the NextTurn show the board Next turn. &lt;br /&gt;
| [[Image:Showturn.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| BlackPiecepoint &lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the board Next_turn is white then the blk_score show the black point. &lt;br /&gt;
| [[Image:Blackpiecepoint.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| WhitePiecepoint &lt;br /&gt;
| When the any square Sq2 emptypiece any square Sq1, if the board Next_turn is black then the wte_score show the white point. &lt;br /&gt;
| [[Image:Whitepiecepoint.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| GameOver &lt;br /&gt;
| When the any square Sq1 movePiece to any square Sq2, if the board black point is 0 then the white won the game otherwise if the board white point is 0 then the black won the game &lt;br /&gt;
| [[Image:GameOver.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Loadgame &lt;br /&gt;
| when the user click NewGame then the NewGame load new game &lt;br /&gt;
| [[Image:LoadGame.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Download the ChessGame Example  ===&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the ChessGame final application, as well as of the LSC project that can be opened and modified in PlayGo.&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== ChessGame final application (runnable jar) ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessGameSwingGUI.zip|Runnable Chess Game with Swing GUI]] &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To run the ChessGame, simply extract the downloaded zip and double click the jar file.&amp;lt;br&amp;gt; &amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
==== ChessGame LSC project ====&lt;br /&gt;
&lt;br /&gt;
[[Media:ChessGame.zip|The ChessGame LSC Project (for development purposes)]] &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
===== Installation Instructions =====&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded zip. &lt;br /&gt;
#[[Download PlayGo|Download PlayGo]]. &lt;br /&gt;
#Import the downloaded project to your workspace: &lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace. &lt;br /&gt;
##Click the 'Next' button. &lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded ChessGame example. &lt;br /&gt;
##Click finish. &lt;br /&gt;
#The ChessGame example project is now part of your workspace. You can start playing with it. For details refer to [[How to Play-Out|how to play out]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Graph and Connections  ==&lt;br /&gt;
&lt;br /&gt;
'''Example1-ChessProject'''&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;[[Image:SivChessGame.png|SIV Graph]]&amp;lt;br&amp;gt; Dependency graph for Example 1. This graph shows clusters (communities). And MovePiece is selected here and the connected LSCs are colored (blue or pink). Green edges are unified messages between LSCs. &amp;lt;br&amp;gt;See [[http://www.weizmann.ac.il/mediawiki/harelgroup/index.php/SIV_Plugin | SIV-Plugin]] for details. &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; '''Example2-ChessGame'''&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;[[Image:ChessSIV-example2.png|SIV Graph]]&amp;lt;br&amp;gt; Dependency graph for Example 2. This graph also shows clusters (communities). And MovePiece is selected here and the connected LSCs are colored (blue or pink). Green edges are unified messages between LSCs.&amp;lt;br&amp;gt; Note: messages were unified here regardless of the parameters, since parameters are symbolic, e.g., MovePiece(String piecename). &amp;lt;br&amp;gt;see[[http://www.weizmann.ac.il/mediawiki/harelgroup/index.php/SIV_Plugin | SIV-Plugin]] for details &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; General observations: Both seem plausible, although they are a bit different. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== SystemModel  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; Example1-ChessProject&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:ChessProjectSystemModel.png|SystemModel]] &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; Example2-ChessGame&amp;lt;br&amp;gt;&amp;amp;nbsp;[[Image:ChessGameSystemmodel.png|System Model]] &amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Example 3 - a non working LSC  ==&lt;br /&gt;
&lt;br /&gt;
In this example, we demonstrate an LSC created, that seems to work, but will not work due to an unbound lifeline. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight &lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight. &lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Since Sq2 is dynamic and there are more highlighted squares it leads to the universal binding, not implemented in PlayGo.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-03-04T08:29:07Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example.&lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. The chess game has many rules and that are implemented in this example, see [[http://en.wikipedia.org/wiki/Chess chess]]. The games interface is throught mouse clicks on the peices and the chess board's squares. A click on a square highlights valid user moves according to the rules of chess and the selected piece. The game is implemented with LSCs that can created in different ways, in this example, we present requirements created in two ways: one using the natural language interface to LSCs (NL-Play-In) and the other using the editor. We also review the differences between the approaches.&lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessScreenShot.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example 1 - LSCs created with NL-Play-In  ==&lt;br /&gt;
The LSCs in this section were created with the [[ PlayGo_Feature_List#Natural_language_play-in | NL-Play-In]]. The natural language text was parsed automatically to create the LSC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectSource&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectSource.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectTarget&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL CheckPossibility&lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL MovePiece&lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:MoveSource.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL TurnChange&lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn2&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL ResetBoard&lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL PawnPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;pawn&amp;quot; then the Square setPossiblePawnSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:PawnPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL RookPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;rook&amp;quot; then the Square setPossibleRookSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:RookPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KnightPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;knight&amp;quot; then the Square setPossibleKnightSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:KnightPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL BishopPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;bishop&amp;quot; then the Square setPossibleBishopSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:BishopPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL QueenPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;queen&amp;quot; then the Square setPossibleQueenSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:QueenPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KingPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;king&amp;quot; then the Square setPossibleKingSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:KingPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example 2 - LSC for the game ==&lt;br /&gt;
The following LSCs where created with the use of the editor.&lt;br /&gt;
Our intention was to create a specification with more than one symbolic lifeline in the LSCs and possibly more than one monitored event at the chart start.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square PieceClick&lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type then the square Sq1 check_Move square Sq2.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:PieceClick.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Square MovePiece&lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2.&lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece&lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2.&lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square NextMove&lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;.&lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square SetSource&lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessage&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessageReset&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetPossiblePosition&lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1.&lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
===== Example 3 - a non working LSC  =====&lt;br /&gt;
In this example, we demonstrate an LSC created, that seems to work, but will not work due to an unbound lifeline.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight&lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight.&lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
Since Sq2 is dynamic and there are more highlighted squares it leads to the universal binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt; ==&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-03-04T08:28:51Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example.&lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. The chess game has many rules and that are implemented in this example, see [[http://en.wikipedia.org/wiki/Chess |chess]]. The games interface is throught mouse clicks on the peices and the chess board's squares. A click on a square highlights valid user moves according to the rules of chess and the selected piece. The game is implemented with LSCs that can created in different ways, in this example, we present requirements created in two ways: one using the natural language interface to LSCs (NL-Play-In) and the other using the editor. We also review the differences between the approaches.&lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessScreenShot.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example 1 - LSCs created with NL-Play-In  ==&lt;br /&gt;
The LSCs in this section were created with the [[ PlayGo_Feature_List#Natural_language_play-in | NL-Play-In]]. The natural language text was parsed automatically to create the LSC.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectSource&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectSource.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectTarget&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL CheckPossibility&lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL MovePiece&lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:MoveSource.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL TurnChange&lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn2&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL ResetBoard&lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL PawnPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;pawn&amp;quot; then the Square setPossiblePawnSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:PawnPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL RookPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;rook&amp;quot; then the Square setPossibleRookSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:RookPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KnightPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;knight&amp;quot; then the Square setPossibleKnightSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:KnightPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL BishopPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;bishop&amp;quot; then the Square setPossibleBishopSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:BishopPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL QueenPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;queen&amp;quot; then the Square setPossibleQueenSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:QueenPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KingPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;king&amp;quot; then the Square setPossibleKingSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:KingPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example 2 - LSC for the game ==&lt;br /&gt;
The following LSCs where created with the use of the editor.&lt;br /&gt;
Our intention was to create a specification with more than one symbolic lifeline in the LSCs and possibly more than one monitored event at the chart start.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square PieceClick&lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type then the square Sq1 check_Move square Sq2.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:PieceClick.png|thumb|left|x50px|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Square MovePiece&lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2.&lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece&lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2.&lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square NextMove&lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;.&lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square SetSource&lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessage&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessageReset&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetPossiblePosition&lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1.&lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
===== Example 3 - a non working LSC  =====&lt;br /&gt;
In this example, we demonstrate an LSC created, that seems to work, but will not work due to an unbound lifeline.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight&lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight.&lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
Since Sq2 is dynamic and there are more highlighted squares it leads to the universal binding.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt; ==&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-03-04T08:19:29Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example. &lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. The chess game has many rules and that are implemented in this example, see [http://en.wikipedia.org/wiki/Chess [chess]]. The games interface is throught mouse clicks on the peices and the chess board's squares. A click on a square highlights valid user moves according to the rules of chess and the selected piece. The game is implemented with LSCs that can created in different ways, in this example, we present requirements created in two ways: one using the natural language interface to LSCs (NL-Play-In) and the other using the editor. We also review the differences between the approaches. &lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessScreenShot.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Example 1 - LSCs created with NL-Play-In  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectSource &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectSource.png|thumb|left|x50px|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectTarget &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|x50px|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL CheckPossibility &lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|x50px|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL MovePiece &lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:MoveSource.png|thumb|left|x50px|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL TurnChange &lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn2 &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL ResetBoard &lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL PawnPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;pawn&amp;quot; then the Square setPossiblePawnSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:PawnPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL RookPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;rook&amp;quot; then the Square setPossibleRookSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:RookPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KnightPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;knight&amp;quot; then the Square setPossibleKnightSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:KnightPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL BishopPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;bishop&amp;quot; then the Square setPossibleBishopSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:BishopPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL QueenPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;queen&amp;quot; then the Square setPossibleQueenSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:QueenPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KingPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;king&amp;quot; then the Square setPossibleKingSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:KingPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example 2 - LSC for the game ==&lt;br /&gt;
The following LSCs where created with the use of the editor.&lt;br /&gt;
Our intention was to create a specification with more than one symbolic lifeline in the LSCs and possibly more than one monitored event at the chart start.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square PieceClick &lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type then the square Sq1 check_Move square Sq2.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:PieceClick.png|thumb|left|x50px|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Square MovePiece &lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2. &lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece &lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2. &lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square NextMove &lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;. &lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square SetSource &lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessage &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessageReset &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetPossiblePosition &lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1. &lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
===== Example of a not working LSC  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight &lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight. &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;Since the Sq2 is dynamic and there are more highlighted squares it leads to the universal binding. The&amp;amp;nbsp; &lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt; ==&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-03-04T08:14:14Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example. &lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. The chess game has many rules and that are implemented in this example, see [[http://en.wikipedia.org/wiki/Chess]]. The games interface is throught mouse clicks on the peices and the chess board's squares. A click on a square highlights valid user moves according to the rules of chess and the selected piece. The game is implemented with LSCs that can created in different ways, in this example, we present requirements created in two ways: one using the natural language interface to LSCs (NL-Play-In) and the other using the editor. We also review the differences between the approaches. &lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessScreenShot.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Example 1 - LSC for the game  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square PieceClick &lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type then the square Sq1 check_Move square Sq2.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:PieceClick.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Square MovePiece &lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2. &lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece &lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2. &lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square NextMove &lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;. &lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square SetSource &lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessage &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessageReset &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetPossiblePosition &lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1. &lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
===== Example of a not working LSC  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight &lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight. &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;Since the Sq2 is dynamic and there are more highlighted squares it leads to the universal binding. The&amp;amp;nbsp; &lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Example-2 LSCs with Natural Language &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectSource &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectSource.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectTarget &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL CheckPossibility &lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL MovePiece &lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:MoveSource.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL TurnChange &lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn2 &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL ResetBoard &lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL PawnPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;pawn&amp;quot; then the Square setPossiblePawnSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:PawnPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL RookPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;rook&amp;quot; then the Square setPossibleRookSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:RookPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KnightPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;knight&amp;quot; then the Square setPossibleKnightSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:KnightPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL BishopPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;bishop&amp;quot; then the Square setPossibleBishopSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:BishopPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL QueenPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;queen&amp;quot; then the Square setPossibleQueenSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:QueenPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KingPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;king&amp;quot; then the Square setPossibleKingSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:KingPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt; ==&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-03-04T08:12:52Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example.&lt;br /&gt;
&lt;br /&gt;
The '''chess game example''' demonstrates the creation of a chess game for two-players. The chess game has many rules and that are implemented in this example, see [[http://en.wikipedia.org/wiki/Chess]]. The games interface is throught mouse clicks on the peices and the chess board's squares. A click on a square highlights valid user moves according to the rules of chess and the selected piece. The game is implemented with LSCs that can created in different ways, in this example, we present requirements created in two ways: one using the natural language interface to LSCs (NL-Play-In) and the other using the editor. We also review the differences between the approaches.&lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessScreenShot.png]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example 1 - LSC for the game  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square PieceClick&lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type then the square Sq1 check_Move square Sq2.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:PieceClick.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Square MovePiece&lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2.&lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece&lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2.&lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square NextMove&lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;.&lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square SetSource&lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessage&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessageReset&lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;.&lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetPossiblePosition&lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1.&lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
===== Example of a not working LSC  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight&lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight. &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;Since the Sq2 is dynamic and there are more highlighted squares it leads to the universal binding. The&amp;amp;nbsp;&lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Example-2 LSCs with Natural Language &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectSource&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectSource.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectTarget&lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL CheckPossibility&lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL MovePiece&lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:MoveSource.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL TurnChange&lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn2&lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL ResetBoard&lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL PawnPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;pawn&amp;quot; then the Square setPossiblePawnSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:PawnPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL RookPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;rook&amp;quot; then the Square setPossibleRookSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:RookPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KnightPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;knight&amp;quot; then the Square setPossibleKnightSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:KnightPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL BishopPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;bishop&amp;quot; then the Square setPossibleBishopSquares. &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:BishopPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL QueenPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;queen&amp;quot; then the Square setPossibleQueenSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:QueenPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KingPossiblePosition&lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;king&amp;quot; then the Square setPossibleKingSquares . &amp;amp;nbsp;&lt;br /&gt;
|&lt;br /&gt;
[[Image:KingPossible.png|thumb|left|LSC]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt; ==&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example</id>
		<title>Chess Game Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Chess_Game_Example"/>
				<updated>2013-03-04T08:08:15Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a protected page for the Chess Game Example. &lt;br /&gt;
&lt;br /&gt;
The ChessGameExample demonstrate chess game with a two-player strategy played on a chessboard. The original chess game has lots of rules and regulations most of them are implemented in this example.The game accepts moves through the mouse click on the pieces. A source selection highlights valid user moves for target selection. The game can be constructed in different ways, in which two of them are described below. &lt;br /&gt;
&lt;br /&gt;
== Game Board  ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ChessScreenShot.png]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Example 1 - LSC for the game  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Description &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square PieceClick &lt;br /&gt;
| When the user click any square Sq1, and then click any square Sq2, if the board next turn is equals to the Sq1 piece type then the square Sq1 check_Move square Sq2.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:PieceClick.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| Square MovePiece &lt;br /&gt;
| When the square Sq1 check_Move square Sq2, canmove is assigned whether the movement of piece from square Sq1 to Sq2 is possible, &amp;amp;nbsp;if the piece canmove and Sq1 piecetype is not equals to Sq2 piecetype then the square Sq1 move_Piece to square Sq2. &lt;br /&gt;
| [[Image:MovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square RemovePiece &lt;br /&gt;
| When&amp;amp;nbsp;the square Sq1 move_Piece to square Sq2, &amp;amp;nbsp;then the square Sq2 emptyPiece the square Sq2. &lt;br /&gt;
| [[Image:RemovePiece.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square NextMove &lt;br /&gt;
| When the square Sq1 move_Piece to square Sq2, if the board next turn is &amp;quot;white&amp;quot; the board next turn changes to &amp;quot;black&amp;quot; otherwise if the board next turn is &amp;quot;black&amp;quot; the board next turn changes to &amp;quot;white&amp;quot;. &lt;br /&gt;
| [[Image:NextMove.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square SetSource &lt;br /&gt;
| When the user click any square Sq1, if the Issource is &amp;quot;empty&amp;quot; then the square Sq1's possible positions are set and the IsSource changes to &amp;quot;set&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| [[Image:SetSource.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessage &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowMessage.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ShowMessageReset &lt;br /&gt;
| When the user click any square Sq1, if the square IsSource is &amp;quot;empty&amp;quot; and the board next turn not equals the Sq1 piecetype then the square showmessage and the Issource is set to &amp;quot;empty&amp;quot;. &lt;br /&gt;
| [[Image:ShowmessageReset.jpg|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetPossiblePosition &lt;br /&gt;
| When the user click any square Sq1, the square Sq1 setPossiblePosition and the user click any other square Sq2 then the Sq2 resetPossiblePosition of the Sq1. &lt;br /&gt;
| [[Image:ResetPossiblePosition.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt;  ==&lt;br /&gt;
&lt;br /&gt;
===== Example of a not working LSC  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Explanation &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| Square ResetHighlight &lt;br /&gt;
| when the square sq2 is highlighed and the user click that square Sq2 then the square reset the highlight. &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp; &amp;amp;nbsp;Since the Sq2 is dynamic and there are more highlighted squares it leads to the universal binding. The&amp;amp;nbsp; &lt;br /&gt;
| [[Image:ResetHighlight.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
== Example-2 LSCs with Natural Language &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | Name &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectSource &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;0&amp;quot; and the Square type is not &amp;quot;vacent&amp;quot; then the Square selectSource and the board sourcetargetValue changes to &amp;quot;1&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectSource.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL SelectTarget &lt;br /&gt;
| when the user clicks any Square, if the board sourcetargetValue is &amp;quot;1&amp;quot; then the Square selectTarget and the board sourcetargetValue changes to &amp;quot;0&amp;quot;.&amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:SelectTarget.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL CheckPossibility &lt;br /&gt;
| when any Square selectTarget then the Square checkPossibility. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:CheckPossibility.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL MovePiece &lt;br /&gt;
| when any Square checkPossibility, if the Square possibility is &amp;quot;true&amp;quot; then the Square MovePiece. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:MoveSource.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL TurnChange &lt;br /&gt;
| when any Square MovePiece, if the board state is &amp;quot;black&amp;quot; then the board state changes to &amp;quot;white&amp;quot; otherwise if the board state is &amp;quot;white&amp;quot; then the board state changes to &amp;quot;black&amp;quot; . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:TurnChange.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;black&amp;quot; and the board state is &amp;quot;white&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn1.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL WrongTurn2 &lt;br /&gt;
| when any Square selectSource, if the Square type is &amp;quot;white&amp;quot; and the board state is &amp;quot;black&amp;quot; then the Square showMessage. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:WrongTurn2.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL ResetBoard &lt;br /&gt;
| when any Square showMessage then the board sourcetargetValue changes to &amp;quot;0&amp;quot;. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:ResetBoard.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL PawnPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;pawn&amp;quot; then the Square setPossiblePawnSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:PawnPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL RookPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;rook&amp;quot; then the Square setPossibleRookSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:RookPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KnightPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;knight&amp;quot; then the Square setPossibleKnightSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:KnightPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL BishopPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;bishop&amp;quot; then the Square setPossibleBishopSquares. &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:BishopPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL QueenPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;queen&amp;quot; then the Square setPossibleQueenSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:QueenPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| ChessNL KingPossiblePosition &lt;br /&gt;
| when any Square selectSource, if the Square piecename is &amp;quot;king&amp;quot; then the Square setPossibleKingSquares . &amp;amp;nbsp; &lt;br /&gt;
| &lt;br /&gt;
[[Image:KingPossible.png|thumb|left|LSC]] &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Graph and Connections&amp;lt;br&amp;gt; ==&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:54:03Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8, 231-274, 1987.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value.&lt;br /&gt;
| Demonstrates a property change as a trigger.&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off.&lt;br /&gt;
| Demonstrates symbolic \ non-deterministic objects.&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:52:55Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value.&lt;br /&gt;
| Demonstrates a property change as a trigger.&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off.&lt;br /&gt;
| Demonstrates symbolic \ non-deterministic objects.&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:52:10Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;70%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;80%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;80%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value.&lt;br /&gt;
| Demonstrates a property change as a trigger.&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;80%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;80%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off.&lt;br /&gt;
| Demonstrates symbolic \ non-deterministic objects.&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;80%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;15%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:50:24Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value.&lt;br /&gt;
| Demonstrates a property change as a trigger.&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
|&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. &lt;br /&gt;
| Demonstrates symbolic \ non-deterministic objects.&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:47:04Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;75%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;15%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value .&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:46:42Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;80%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;10%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;10%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value .&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:46:14Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;60%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;20%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;20%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| &lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| &lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| &lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| &lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
|&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value .&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:45:10Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;60%&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot;  width = &amp;quot;20%&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;20%&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value .&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:43:10Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Natural Language Text&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Comments&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | LSC&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| Demonstrates if-else.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value .&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-26T11:41:35Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is taken from &amp;lt;ref&amp;gt;D. Harel. &amp;quot;On Visual Formalisms&amp;quot;, Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;, and is a simplified version of the original statecharts watch example of &amp;lt;ref&amp;gt;D. Harel, &amp;quot;Statecharts: A Visual Formalism for Complex Systems&amp;quot;, Sci. Comput. Programming 8 (1987), 231-274.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467. Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value .&lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch final application (runnable jar)===&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To run the wristwatch, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
&lt;br /&gt;
===Wristwatch LSC project===&lt;br /&gt;
[[Media:WristWatch.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
====Installation Instructions====&lt;br /&gt;
#Extract the downloaded zip.&lt;br /&gt;
#[[Download PlayGo|Download PlayGo]].&lt;br /&gt;
#Import the downloaded project to your workspace:&lt;br /&gt;
##From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace&lt;br /&gt;
##Click the 'Next' button&lt;br /&gt;
##When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
##Click finish&lt;br /&gt;
#The wrist watch example project is now part of your workspace. You can start playing with it. For details refer to [[How_to_Play-Out | how to play out]].&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples</id>
		<title>PlayGo Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples"/>
				<updated>2013-02-19T08:34:49Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: /* Wrist Watch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applications==&lt;br /&gt;
===Memory Game===&lt;br /&gt;
[[Image:LSCExample.png |frame|left]][[Image:MemoryGameUI.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The memory game is a simple application containing a single LSC that specifies the behavior of a memory game.&lt;br /&gt;
The memory game UI is based on [http://code.google.com/webtoolkit/ GWT].&amp;lt;br&amp;gt;&lt;br /&gt;
The memory game application demonstrates the following features:&amp;lt;br&amp;gt;&lt;br /&gt;
*Symbolic Instances: memoryCard1 and memoryCard2 lifelines are symbolic: their lifeline head is dashed to visualize just that. The memory game contains 12 cards. During play-out, the clicked cards will dynamically be bound to specific card lifelines. The memory panel is represented by a static lifeline (there is a single panel in the game). This panel will be statically bound to the panel lifeline during play-out.&lt;br /&gt;
*Live copy: A second '''flipUp''' (the second time a user clicks on a card) opens another live copy of the LSC.&lt;br /&gt;
*Enable Events: After a second '''flipUp''', the '''beep''' event is enabled in the first live copy but is not enabled in the second live copy. The second live copy expects another '''flipUp''', and when this event does not occur (instead a '''beep''' event occurs) the live copy is violated and is closed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The memory game application is included in the workspace provided with the PlayGo download.&lt;br /&gt;
*[[Getting Started with PlayGo]]&lt;br /&gt;
*[[PlayGo_HowTo | PlayGo HowTo]]&lt;br /&gt;
&lt;br /&gt;
===Baby Monitor===&lt;br /&gt;
[[Image:BabyMonitor.Lsc12.jpg |frame|left]][[Image:BabyMonitor.png|235px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The baby monitor application includes 14 LSCs, each of which includes 3-4 lifelines. The specification demonstrates various features of PlayGo and the underlying language.&lt;br /&gt;
&amp;lt;br&amp;gt;Most of the LSCs were created by [[PlayGo_Feature_List#Natural_language_play-in | natural language play-in]], and others by [[Language &amp;amp; Concepts#Play-In |basic play-in]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To see the system's requirements in controlled English click [[Baby Monitor Specification | here]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Baby Monitor application is included in the workspace provided with the PlayGo download.&lt;br /&gt;
&lt;br /&gt;
*[[Getting Started with PlayGo]]&lt;br /&gt;
*[[PlayGo_HowTo | PlayGo HowTo]]&lt;br /&gt;
&lt;br /&gt;
===Water Tap===&lt;br /&gt;
[[Image:WaterTap.png | 420px]][[Image:WaterTapUI.jpg |400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The water tap is a simple application containing three LSCs that describe a specific water tap behavior by which a sink is filled with lukewarm water.&lt;br /&gt;
The water tap application demonstrates the following concepts:&amp;lt;br&amp;gt;&lt;br /&gt;
* Modularity - each LSC is self standing and is responsible for a certain aspect of the application's behavior.&lt;br /&gt;
* Incremental development - due to modularity, a system can be developed incrementally. Adding a new behavior affects the complete system behavior but does not require changes to existing LSCs or existing code.&lt;br /&gt;
* Enabled Events: The Interleave LSC shows how after the 'addHot' event occurs, only the 'addCold' event is enabled; Until 'addCold' occurs, 'addHot' is not allowed to occur, thus will wait for its turn.&lt;br /&gt;
* Loops are demonstrated here, bounded by a fixed limit (e.g., 5 times in the addHotFiveTimes LSC) or unbounded (in the Interleave LSC).&lt;br /&gt;
&lt;br /&gt;
[[Media:WaterTap.zip | Download Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Instructions for creating LSC project from LSC file | Instructions for playing with the Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Wrist Watch===&lt;br /&gt;
&lt;br /&gt;
Page under construction, see [http://www.wisdom.weizmann.ac.il/~michalk/Projects/ReqToLSCs/ http://www.wisdom.weizmann.ac.il/~michalk/Projects/ReqToLSCs/] for an earlier version&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples</id>
		<title>PlayGo Examples</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=PlayGo_Examples"/>
				<updated>2013-02-19T08:34:24Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: /* Wrist Watch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Applications==&lt;br /&gt;
===Memory Game===&lt;br /&gt;
[[Image:LSCExample.png |frame|left]][[Image:MemoryGameUI.png]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The memory game is a simple application containing a single LSC that specifies the behavior of a memory game.&lt;br /&gt;
The memory game UI is based on [http://code.google.com/webtoolkit/ GWT].&amp;lt;br&amp;gt;&lt;br /&gt;
The memory game application demonstrates the following features:&amp;lt;br&amp;gt;&lt;br /&gt;
*Symbolic Instances: memoryCard1 and memoryCard2 lifelines are symbolic: their lifeline head is dashed to visualize just that. The memory game contains 12 cards. During play-out, the clicked cards will dynamically be bound to specific card lifelines. The memory panel is represented by a static lifeline (there is a single panel in the game). This panel will be statically bound to the panel lifeline during play-out.&lt;br /&gt;
*Live copy: A second '''flipUp''' (the second time a user clicks on a card) opens another live copy of the LSC.&lt;br /&gt;
*Enable Events: After a second '''flipUp''', the '''beep''' event is enabled in the first live copy but is not enabled in the second live copy. The second live copy expects another '''flipUp''', and when this event does not occur (instead a '''beep''' event occurs) the live copy is violated and is closed.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The memory game application is included in the workspace provided with the PlayGo download.&lt;br /&gt;
*[[Getting Started with PlayGo]]&lt;br /&gt;
*[[PlayGo_HowTo | PlayGo HowTo]]&lt;br /&gt;
&lt;br /&gt;
===Baby Monitor===&lt;br /&gt;
[[Image:BabyMonitor.Lsc12.jpg |frame|left]][[Image:BabyMonitor.png|235px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The baby monitor application includes 14 LSCs, each of which includes 3-4 lifelines. The specification demonstrates various features of PlayGo and the underlying language.&lt;br /&gt;
&amp;lt;br&amp;gt;Most of the LSCs were created by [[PlayGo_Feature_List#Natural_language_play-in | natural language play-in]], and others by [[Language &amp;amp; Concepts#Play-In |basic play-in]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt; To see the system's requirements in controlled English click [[Baby Monitor Specification | here]].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The Baby Monitor application is included in the workspace provided with the PlayGo download.&lt;br /&gt;
&lt;br /&gt;
*[[Getting Started with PlayGo]]&lt;br /&gt;
*[[PlayGo_HowTo | PlayGo HowTo]]&lt;br /&gt;
&lt;br /&gt;
===Water Tap===&lt;br /&gt;
[[Image:WaterTap.png | 420px]][[Image:WaterTapUI.jpg |400px]]&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The water tap is a simple application containing three LSCs that describe a specific water tap behavior by which a sink is filled with lukewarm water.&lt;br /&gt;
The water tap application demonstrates the following concepts:&amp;lt;br&amp;gt;&lt;br /&gt;
* Modularity - each LSC is self standing and is responsible for a certain aspect of the application's behavior.&lt;br /&gt;
* Incremental development - due to modularity, a system can be developed incrementally. Adding a new behavior affects the complete system behavior but does not require changes to existing LSCs or existing code.&lt;br /&gt;
* Enabled Events: The Interleave LSC shows how after the 'addHot' event occurs, only the 'addCold' event is enabled; Until 'addCold' occurs, 'addHot' is not allowed to occur, thus will wait for its turn.&lt;br /&gt;
* Loops are demonstrated here, bounded by a fixed limit (e.g., 5 times in the addHotFiveTimes LSC) or unbounded (in the Interleave LSC).&lt;br /&gt;
&lt;br /&gt;
[[Media:WaterTap.zip | Download Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Instructions for creating LSC project from LSC file | Instructions for playing with the Water Tap application]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Wrist Watch===&lt;br /&gt;
&lt;br /&gt;
Page under construction, see [http://www.wisdom.weizmann.ac.il/~michalk/Projects/ReqToLSCs/ http://www.wisdom.weizmann.ac.il/~michalk/Projects/ReqToLSCs/] for an earlier version&lt;br /&gt;
&lt;br /&gt;
[chess project]&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-13T09:54:17Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is originally from &amp;lt;ref&amp;gt;D. Harel. On Visual Formalisms. Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467.fckLRSpringer-Verlag, 2009.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else). &lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time. &lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm. &lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm. &lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm. &lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour. &lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds. &lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none. &lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none. &lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update. &lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second. &lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger). &lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on. &lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on. &lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled. &lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none. &lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element). &lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects). &lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value. &lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value . &lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo. &lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#For the Runnable Wrist Watch downloads, simply extract the downloaded zip and double click the jar file. &lt;br /&gt;
#For the PlayGo project, follow these instructions: &lt;br /&gt;
##Extract the downloaded zip. &lt;br /&gt;
##[[Download PlayGo|Download PlayGo]]. &lt;br /&gt;
##Import the downloaded project to your workspace: &lt;br /&gt;
###From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace &lt;br /&gt;
###When prompted, select the directory to which you extracted the downloaded wrist watch example &lt;br /&gt;
###Click finish &lt;br /&gt;
#The wrist example project is now part of your workspace and you can start playing with it.&lt;br /&gt;
&lt;br /&gt;
== References  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:DisplayAlarm.png</id>
		<title>File:DisplayAlarm.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:DisplayAlarm.png"/>
				<updated>2013-02-13T09:34:46Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:DisplayDate.png</id>
		<title>File:DisplayDate.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:DisplayDate.png"/>
				<updated>2013-02-13T09:34:35Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-13T09:34:12Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is originally from &amp;lt;ref&amp;gt;D. Harel. On Visual Formalisms. Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time is reached. The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios fromfckLRnatural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467.fckLRSpringer-Verlag, 2009.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else). &lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time. &lt;br /&gt;
| [[Image:Modes.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm. &lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm. &lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm. &lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour. &lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds. &lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none. &lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none. &lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update. &lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second. &lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger). &lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on. &lt;br /&gt;
| [[Image:LightState.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on. &lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled. &lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none. &lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element). &lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects). &lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to alarm, the display text changes to the alarm value. &lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Date  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes to date, the display text changes to the date value . &lt;br /&gt;
| [[Image:DisplayDate.png|thumb|left|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;amp;nbsp;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo. &lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#For the Runnable Wrist Watch downloads, simply extract the downloaded zip and double click the jar file. &lt;br /&gt;
#For the PlayGo project, follow these instructions: &lt;br /&gt;
##Extract the downloaded zip. &lt;br /&gt;
##[[Download PlayGo|Download PlayGo]]. &lt;br /&gt;
##Import the downloaded project to your workspace: &lt;br /&gt;
###From the File menu choose Import--&amp;amp;gt;General--&amp;amp;gt;Existing Projects into Workspace &lt;br /&gt;
###When prompted, select the directory to which you extracted the downloaded wrist watch example &lt;br /&gt;
###Click finish &lt;br /&gt;
#The wrist example project is now part of your workspace and you can start playing with it.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-13T09:30:09Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: /* Alarm */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The wristwatch example is originally from &amp;lt;ref&amp;gt;D. Harel. On Visual Formalisms. Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios from&lt;br /&gt;
natural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467.&lt;br /&gt;
Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the display mode changes to alarm, the display text changes to the alarm value.&lt;br /&gt;
| [[Image:DisplayAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
Below are downloads of the wrist watch final application, as well as of the LSC project that can be opened and modified in PlayGo.&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|Runnable Wrist Watch with Swing GUI]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|Runnable Wrist Watch with the auto generated System Model GUI]] &amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:WristWatchExampleSystemModelGUI.zip|The Wrist Watch LSC Project (for development purposes)]] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#For the Runnable Wrist Watch downloads, simply extract the downloaded zip and double click the jar file.&lt;br /&gt;
# For the PlayGo project, follow these instructions:&lt;br /&gt;
## Extract the downloaded zip.&lt;br /&gt;
## [[Download_PlayGo | Download PlayGo]].&lt;br /&gt;
## Import the downloaded project to your workspace:&lt;br /&gt;
### From the File menu choose Import--&amp;gt;General--&amp;gt;Existing Projects into Workspace&lt;br /&gt;
### When prompted, select the directory to which you extracted the downloaded wrist watch example&lt;br /&gt;
### Click finish&lt;br /&gt;
# The wrist example project is now part of your workspace and you can start playing with it.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:25:34Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
The wristwatch example is originally from &amp;lt;ref&amp;gt;D. Harel. On Visual Formalisms. Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios from&lt;br /&gt;
natural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467.&lt;br /&gt;
Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:24:11Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
The wristwatch example is originally from &amp;lt;ref&amp;gt;D. Harel. On Visual Formalisms. Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios from&lt;br /&gt;
natural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467.&lt;br /&gt;
Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
The wristwatch example is originally from &amp;lt;ref&amp;gt;D. Harel. On Visual Formalisms. Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;.&lt;br /&gt;
Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it was originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios from&lt;br /&gt;
natural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467.&lt;br /&gt;
Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:21:28Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
The wristwatch example is originally from &amp;lt;ref&amp;gt;D. Harel. On Visual Formalisms. Commun. ACM, 31(5):514–530, 1988.&amp;lt;/ref&amp;gt;. &lt;br /&gt;
Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in, it waas originally created in &amp;lt;ref&amp;gt;M. Gordon and D. Harel. Generating executable scenarios from&lt;br /&gt;
natural language. In Proc. 10th Int. Conf. on Computational Linguistics and Intelligent Text Processing, CICLing’09, pages 456–467.&lt;br /&gt;
Springer-Verlag, 2009.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{reflist}}&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:18:00Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
The wristwatch example is originally from XX. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in.&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:13:16Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
The wristwatch example is originally from XX. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in.&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm.&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour.&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds.&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none.&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none.&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update.&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second.&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value. (demonstrates a property change as a trigger).&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]] &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on.&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on.&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled.&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none.&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects).&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:11:59Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
The wristwatch example is originally from XX. Generally, the watch displays the time and can switch between different displays that show (and allow changes to) the alarm, date, time and stopwatch. It has an option for turning on the light, and an alarm that beeps when the set time&lt;br /&gt;
is reached.&lt;br /&gt;
The following examples demonstrate many constructs in the LSC language and the way they are created in natural lanague play-in.&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time. (demonstrates if-else).&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time. &lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]] (demonstrates a property change as a trigger).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change. (demonstrates loop and forbidden element).&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off. (demonstrates symbolic \ non-deterministic objects)&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:05:40Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We will present each of the requirements text, and the LSC created from them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on&lt;br /&gt;
| [[Image:LightState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T14:04:06Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We will present each of the requirements text, and the LSC created from them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|x50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|70px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on&lt;br /&gt;
| [[Image:LightState.png|thumb|left|70px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none&lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change&lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off&lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|70px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmBlink.png</id>
		<title>File:AlarmBlink.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmBlink.png"/>
				<updated>2013-02-06T14:00:59Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmOff.png</id>
		<title>File:AlarmOff.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmOff.png"/>
				<updated>2013-02-06T14:00:18Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmBeep.png</id>
		<title>File:AlarmBeep.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmBeep.png"/>
				<updated>2013-02-06T13:54:09Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example</id>
		<title>Wristwatch Example</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=Wristwatch_Example"/>
				<updated>2013-02-06T13:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We will present each of the requirements text, and the LSC created from them.&amp;amp;nbsp;&lt;br /&gt;
&lt;br /&gt;
== Requirements  ==&lt;br /&gt;
&lt;br /&gt;
=== Watch Modes  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the d_button, if the display mode is time, the display mode changes to date, otherwise if the display mode is date, the display mode changes to time.&lt;br /&gt;
| [[Image:WatchModes.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button, if the display mode is time, the display mode changes to alarm, otherwise if the display mode is alarm, the display mode changes to chime, otherwise if the display mode is chime, the display mode changes to stopwatch, otherwise if the display mode is stopwatch, the display mode changes to time.&lt;br /&gt;
| [[Image:Modes.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is alarm then the display mode changes to &amp;quot;alarm minutes&amp;quot; , otherwise if the display mode is &amp;quot;alarm minutes&amp;quot; then the display mode changes to &amp;quot;alarm hours&amp;quot; , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; then the display mode changes to alarm&lt;br /&gt;
| [[Image:ModesAlarm.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm minutes”, the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmEnd.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the display mode is “alarm hours” , the display mode changes to alarm&lt;br /&gt;
| [[Image:ModeAlarmHoursEnd.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the a_button , if the display mode is &amp;quot;alarm minutes&amp;quot; , the alarm increases in one minute , otherwise if the display mode is &amp;quot;alarm hours&amp;quot; , the alarm increases by one hour&lt;br /&gt;
| [[Image:IncreaseTime.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the display mode is time , the display mode changes to update and the update type changes to seconds&lt;br /&gt;
| [[Image:UpdateSeconds.png|thumb|left|70px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Updates  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the c_button , if the update type is seconds , the update type changes to minutes otherwise if the update type is minutes , the update type changes to hours otherwise if the update type is hours , the update type changes to date otherwise if the update type is date, the display mode changes to time and the update type changes to none&lt;br /&gt;
| [[Image:UpdateType.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes , if the update type equals seconds , the display blinks seconds , otherwise if the update type equals minutes , the display blinks minutes , otherwise the display blinks none&lt;br /&gt;
| [[Image:UpdateTypeBlink.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the update type changes, the display mode changes to update&lt;br /&gt;
| [[Image:UpdateTypeChange.png|thumb|left|70px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Time  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the clock ticks, the time increases by one second&lt;br /&gt;
| [[Image:TimeTicks.png|thumb|left|50px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes, if the display mode is time, the display text changes to time value&lt;br /&gt;
| [[Image:ShowTime.png|thumb|left|50px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Light  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks the b_button, if the light state is on , the light state turns to off , otherwise if the light state is off , the light state turns to on&lt;br /&gt;
| [[Image:LightState.png|thumb|left|70px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Alarm  ===&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;left&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| when the time value changes , if the time value equals the alarm value and the alarm state is enabled then the beeper state turns to on&lt;br /&gt;
| [[Image:AlarmState.png|thumb|left|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the user clicks the d_button , if the display mode is alarm , if the alarm state is enabled , the alarm state changes to disabled otherwise the alarm state changes to enabled&lt;br /&gt;
| [[Image:AlarmEnable.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the display mode changes , if the display mode equals &amp;quot;alarm minutes&amp;quot; , the display blinks in minutes , otherwise if the display mode equals &amp;quot;alarm hours&amp;quot; , the display blinks in hours , otherwise the display blinks in none &lt;br /&gt;
| [[Image:AlarmBlink.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
|when the beeper state changes to on, as long as the beeper state is on and two seconds elapse, the beeper beeps, the display mode may not change &lt;br /&gt;
| [[Image:AlarmBeep.png|thumb|left|70px|LSC]]&lt;br /&gt;
|-&lt;br /&gt;
| when the user clicks any WButton , the beeper state turns to off &lt;br /&gt;
| [[Image:AlarmOff.png|thumb|left|70px|LSC]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; TODO - Should have a link from the Example Page.&lt;br /&gt;
&lt;br /&gt;
== Download the Wrist Watch Example  ==&lt;br /&gt;
&lt;br /&gt;
The following zip files contain...&lt;br /&gt;
&lt;br /&gt;
[[Media:WristWatchExampleSwingGUI.zip|WristWatchExampleSwingGUI.zip]] &amp;lt;br&amp;gt; [[Media:WristWatchExampleSystemModelGUI.zip|WristWatchExampleSystemModelGUI.zip]]&lt;br /&gt;
&lt;br /&gt;
== Installation Instructions  ==&lt;br /&gt;
&lt;br /&gt;
#Extract the downloaded file. The zip includes an executable jar and a properties file - ToDO: extend this and add image of the extracted folder.&lt;br /&gt;
#Double click the jar and start playing&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmEnable.png</id>
		<title>File:AlarmEnable.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmEnable.png"/>
				<updated>2013-02-06T13:49:48Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	<entry>
		<id>https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmState.png</id>
		<title>File:AlarmState.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.weizmann.ac.il/playgo/index.php?title=File:AlarmState.png"/>
				<updated>2013-02-06T13:49:34Z</updated>
		
		<summary type="html">&lt;p&gt;Michal: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Michal</name></author>	</entry>

	</feed>