From 0ba29e7f64e13a11ad62657c9055120d18ad43bd Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Fri, 24 Nov 2023 13:40:07 -0500
Subject: [PATCH 01/14] Update tictactoe.json fixture to use sum types
This gives us tests for supporting sum type conversions into apalache.
---
tla-io/src/test/resources/tictactoe.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tla-io/src/test/resources/tictactoe.json b/tla-io/src/test/resources/tictactoe.json
index e1f49677bd..d969e9b54c 100644
--- a/tla-io/src/test/resources/tictactoe.json
+++ b/tla-io/src/test/resources/tictactoe.json
@@ -1 +1 @@
-{"stage":"typechecking","warnings":[],"modules":[{"id":444,"name":"tictactoe","declarations":[{"id":112,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":111,"kind":"app","opcode":"Set","args":[{"id":101,"kind":"app","opcode":"Tup","args":[{"id":99,"kind":"int","value":1},{"id":100,"kind":"int","value":1}]},{"id":104,"kind":"app","opcode":"Tup","args":[{"id":102,"kind":"int","value":3},{"id":103,"kind":"int","value":1}]},{"id":107,"kind":"app","opcode":"Tup","args":[{"id":105,"kind":"int","value":1},{"id":106,"kind":"int","value":3}]},{"id":110,"kind":"app","opcode":"Tup","args":[{"id":108,"kind":"int","value":3},{"id":109,"kind":"int","value":3}]}]}},{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},{"id":414,"kind":"def","name":"init","qualifier":"action","expr":{"id":413,"kind":"app","opcode":"actionAll","args":[{"id":397,"kind":"app","opcode":"assign","args":[{"id":396,"kind":"name","name":"nextTurn"},{"id":395,"kind":"str","value":"X"}]},{"id":412,"kind":"app","opcode":"assign","args":[{"id":411,"kind":"name","name":"board"},{"id":410,"kind":"app","opcode":"mapBy","args":[{"id":400,"kind":"app","opcode":"to","args":[{"id":398,"kind":"int","value":1},{"id":399,"kind":"int","value":3}]},{"id":409,"kind":"lambda","params":[{"id":401,"name":"_"}],"qualifier":"def","expr":{"id":408,"kind":"app","opcode":"mapBy","args":[{"id":404,"kind":"app","opcode":"to","args":[{"id":402,"kind":"int","value":1},{"id":403,"kind":"int","value":3}]},{"id":407,"kind":"lambda","params":[{"id":405,"name":"_"}],"qualifier":"def","expr":{"id":406,"kind":"str","value":"_"}}]}}]}]}]}},{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},{"id":135,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":134,"kind":"app","opcode":"forall","args":[{"id":132,"kind":"name","name":"boardCoordinates"},{"id":133,"kind":"name","name":"isEmpty"}]}},{"id":153,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":152,"kind":"app","opcode":"not","args":[{"id":151,"kind":"app","opcode":"exists","args":[{"id":149,"kind":"name","name":"boardCoordinates"},{"id":150,"kind":"name","name":"isEmpty"}]}]}},{"id":193,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":193,"kind":"lambda","params":[{"id":172,"name":"pattern"}],"qualifier":"def","expr":{"id":192,"kind":"app","opcode":"and","args":[{"id":182,"kind":"app","opcode":"eq","args":[{"id":180,"kind":"app","opcode":"size","args":[{"id":179,"kind":"app","opcode":"filter","args":[{"id":173,"kind":"name","name":"pattern"},{"id":178,"kind":"lambda","params":[{"id":174,"name":"coordinate"}],"qualifier":"def","expr":{"id":177,"kind":"app","opcode":"hasValue","args":[{"id":175,"kind":"name","name":"coordinate"},{"id":176,"kind":"str","value":"X"}]}}]}]},{"id":181,"kind":"int","value":2}]},{"id":191,"kind":"app","opcode":"eq","args":[{"id":189,"kind":"app","opcode":"size","args":[{"id":188,"kind":"app","opcode":"filter","args":[{"id":183,"kind":"name","name":"pattern"},{"id":187,"kind":"lambda","params":[{"id":184,"name":"coordinate"}],"qualifier":"def","expr":{"id":186,"kind":"app","opcode":"isEmpty","args":[{"id":185,"kind":"name","name":"coordinate"}]}}]}]},{"id":190,"kind":"int","value":1}]}]}}},{"id":215,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":215,"kind":"lambda","params":[{"id":194,"name":"pattern"}],"qualifier":"def","expr":{"id":214,"kind":"app","opcode":"and","args":[{"id":204,"kind":"app","opcode":"eq","args":[{"id":202,"kind":"app","opcode":"size","args":[{"id":201,"kind":"app","opcode":"filter","args":[{"id":195,"kind":"name","name":"pattern"},{"id":200,"kind":"lambda","params":[{"id":196,"name":"coordinate"}],"qualifier":"def","expr":{"id":199,"kind":"app","opcode":"hasValue","args":[{"id":197,"kind":"name","name":"coordinate"},{"id":198,"kind":"str","value":"O"}]}}]}]},{"id":203,"kind":"int","value":2}]},{"id":213,"kind":"app","opcode":"eq","args":[{"id":211,"kind":"app","opcode":"size","args":[{"id":210,"kind":"app","opcode":"filter","args":[{"id":205,"kind":"name","name":"pattern"},{"id":209,"kind":"lambda","params":[{"id":206,"name":"coordinate"}],"qualifier":"def","expr":{"id":208,"kind":"app","opcode":"isEmpty","args":[{"id":207,"kind":"name","name":"coordinate"}]}}]}]},{"id":212,"kind":"int","value":1}]}]}}},{"id":237,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":237,"kind":"lambda","params":[{"id":216,"name":"pattern"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"and","args":[{"id":226,"kind":"app","opcode":"eq","args":[{"id":224,"kind":"app","opcode":"size","args":[{"id":223,"kind":"app","opcode":"filter","args":[{"id":217,"kind":"name","name":"pattern"},{"id":222,"kind":"lambda","params":[{"id":218,"name":"coordinate"}],"qualifier":"def","expr":{"id":221,"kind":"app","opcode":"hasValue","args":[{"id":219,"kind":"name","name":"coordinate"},{"id":220,"kind":"str","value":"X"}]}}]}]},{"id":225,"kind":"int","value":1}]},{"id":235,"kind":"app","opcode":"eq","args":[{"id":233,"kind":"app","opcode":"size","args":[{"id":232,"kind":"app","opcode":"filter","args":[{"id":227,"kind":"name","name":"pattern"},{"id":231,"kind":"lambda","params":[{"id":228,"name":"coordinate"}],"qualifier":"def","expr":{"id":230,"kind":"app","opcode":"isEmpty","args":[{"id":229,"kind":"name","name":"coordinate"}]}}]}]},{"id":234,"kind":"int","value":2}]}]}}},{"id":250,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":249,"kind":"app","opcode":"isEmpty","args":[{"id":248,"kind":"app","opcode":"Tup","args":[{"id":246,"kind":"int","value":2},{"id":247,"kind":"int","value":2}]}]}},{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},{"doc":"X has not won. This does not hold, as X wins most of the times.","id":430,"kind":"def","name":"XHasNotWon","qualifier":"val","expr":{"id":429,"kind":"app","opcode":"not","args":[{"id":428,"kind":"app","opcode":"won","args":[{"id":427,"kind":"str","value":"X"}]}]}},{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":434,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":433,"kind":"app","opcode":"not","args":[{"id":432,"kind":"app","opcode":"won","args":[{"id":431,"kind":"str","value":"O"}]}]}},{"doc":"This is not always true, as if O picks the right moves, the game will\nresult in a stalemate.","id":443,"kind":"def","name":"XMustEventuallyWin","qualifier":"temporal","expr":{"id":442,"kind":"app","opcode":"eventually","args":[{"id":441,"kind":"app","opcode":"won","args":[{"id":440,"kind":"str","value":"X"}]}]}},{"id":163,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":162,"kind":"app","opcode":"and","args":[{"id":158,"kind":"app","opcode":"and","args":[{"id":154,"kind":"name","name":"boardFull"},{"id":157,"kind":"app","opcode":"not","args":[{"id":156,"kind":"app","opcode":"won","args":[{"id":155,"kind":"str","value":"X"}]}]}]},{"id":161,"kind":"app","opcode":"not","args":[{"id":160,"kind":"app","opcode":"won","args":[{"id":159,"kind":"str","value":"O"}]}]}]}},{"id":171,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":170,"kind":"app","opcode":"or","args":[{"id":168,"kind":"app","opcode":"or","args":[{"id":165,"kind":"app","opcode":"won","args":[{"id":164,"kind":"str","value":"X"}]},{"id":167,"kind":"app","opcode":"won","args":[{"id":166,"kind":"str","value":"O"}]}]},{"id":169,"kind":"name","name":"boardFull"}]}},{"id":241,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":240,"kind":"app","opcode":"exists","args":[{"id":238,"kind":"name","name":"winningPatterns"},{"id":239,"kind":"name","name":"canWinWithPattern"}]}},{"id":245,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":244,"kind":"app","opcode":"exists","args":[{"id":242,"kind":"name","name":"winningPatterns"},{"id":243,"kind":"name","name":"canBlockWithPattern"}]}},{"id":254,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":253,"kind":"app","opcode":"exists","args":[{"id":251,"kind":"name","name":"winningPatterns"},{"id":252,"kind":"name","name":"canSetupWinWithPattern"}]}},{"id":317,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":316,"kind":"app","opcode":"Move","args":[{"id":312,"kind":"str","value":"X"},{"id":315,"kind":"app","opcode":"Tup","args":[{"id":313,"kind":"int","value":2},{"id":314,"kind":"int","value":2}]}]}},{"id":334,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":333,"kind":"app","opcode":"actionAll","args":[{"id":332,"kind":"let","opdef":{"id":322,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":321,"kind":"app","opcode":"oneOf","args":[{"id":320,"kind":"app","opcode":"filter","args":[{"id":318,"kind":"name","name":"winningPatterns"},{"id":319,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":331,"kind":"let","opdef":{"id":327,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":326,"kind":"app","opcode":"oneOf","args":[{"id":325,"kind":"app","opcode":"filter","args":[{"id":323,"kind":"name","name":"pattern"},{"id":324,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":330,"kind":"app","opcode":"Move","args":[{"id":328,"kind":"str","value":"X"},{"id":329,"kind":"name","name":"coordinate"}]}}}]}},{"id":345,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":345,"kind":"lambda","params":[{"id":335,"name":"player"}],"qualifier":"action","expr":{"id":344,"kind":"let","opdef":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":343,"kind":"app","opcode":"Move","args":[{"id":341,"kind":"name","name":"player"},{"id":342,"kind":"name","name":"coordinate"}]}}}},{"id":353,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":352,"kind":"let","opdef":{"id":348,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":347,"kind":"app","opcode":"oneOf","args":[{"id":346,"kind":"name","name":"corners"}]}},"expr":{"id":351,"kind":"app","opcode":"Move","args":[{"id":349,"kind":"str","value":"X"},{"id":350,"kind":"name","name":"corner"}]}}},{"doc":"OHasNotWon is our default invariant for running the simulator/verifier\nas it is the only invariant that holds. Check `NotStalemate` for an\ninteresting counterexample.","id":439,"kind":"def","name":"inv","qualifier":"val","expr":{"id":438,"kind":"name","name":"OHasNotWon"}},{"id":293,"kind":"def","name":"Win","qualifier":"action","expr":{"id":292,"kind":"app","opcode":"actionAll","args":[{"id":276,"kind":"name","name":"canWin"},{"id":291,"kind":"let","opdef":{"id":281,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":280,"kind":"app","opcode":"oneOf","args":[{"id":279,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"winningPatterns"},{"id":278,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":290,"kind":"let","opdef":{"id":286,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":285,"kind":"app","opcode":"oneOf","args":[{"id":284,"kind":"app","opcode":"filter","args":[{"id":282,"kind":"name","name":"pattern"},{"id":283,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":289,"kind":"app","opcode":"Move","args":[{"id":287,"kind":"str","value":"X"},{"id":288,"kind":"name","name":"coordinate"}]}}}]}},{"id":311,"kind":"def","name":"Block","qualifier":"action","expr":{"id":310,"kind":"app","opcode":"actionAll","args":[{"id":294,"kind":"name","name":"canBlock"},{"id":309,"kind":"let","opdef":{"id":299,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":298,"kind":"app","opcode":"oneOf","args":[{"id":297,"kind":"app","opcode":"filter","args":[{"id":295,"kind":"name","name":"winningPatterns"},{"id":296,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":308,"kind":"let","opdef":{"id":304,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":303,"kind":"app","opcode":"oneOf","args":[{"id":302,"kind":"app","opcode":"filter","args":[{"id":300,"kind":"name","name":"pattern"},{"id":301,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":307,"kind":"app","opcode":"Move","args":[{"id":305,"kind":"str","value":"X"},{"id":306,"kind":"name","name":"coordinate"}]}}}]}},{"id":394,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":393,"kind":"app","opcode":"actionAll","args":[{"id":384,"kind":"app","opcode":"eq","args":[{"id":382,"kind":"name","name":"nextTurn"},{"id":383,"kind":"str","value":"O"}]},{"id":387,"kind":"app","opcode":"not","args":[{"id":386,"kind":"app","opcode":"won","args":[{"id":385,"kind":"str","value":"X"}]}]},{"id":389,"kind":"app","opcode":"MoveToEmpty","args":[{"id":388,"kind":"str","value":"O"}]},{"id":392,"kind":"app","opcode":"assign","args":[{"id":391,"kind":"name","name":"nextTurn"},{"id":390,"kind":"str","value":"X"}]}]}},{"doc":"It's not a stalemate if one player has won or the board is not filled\nCheck with `quint run --invariant=NotStalemate tictactoe.qnt`","id":437,"kind":"def","name":"NotStalemate","qualifier":"val","expr":{"id":436,"kind":"app","opcode":"not","args":[{"id":435,"kind":"name","name":"stalemate"}]}},{"id":381,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":380,"kind":"app","opcode":"actionAll","args":[{"id":356,"kind":"app","opcode":"eq","args":[{"id":354,"kind":"name","name":"nextTurn"},{"id":355,"kind":"str","value":"X"}]},{"id":359,"kind":"app","opcode":"not","args":[{"id":358,"kind":"app","opcode":"won","args":[{"id":357,"kind":"str","value":"O"}]}]},{"id":376,"kind":"app","opcode":"ite","args":[{"id":360,"kind":"name","name":"boardEmpty"},{"id":361,"kind":"name","name":"StartInCorner"},{"id":375,"kind":"app","opcode":"ite","args":[{"id":362,"kind":"name","name":"canWin"},{"id":363,"kind":"name","name":"Win"},{"id":374,"kind":"app","opcode":"ite","args":[{"id":364,"kind":"name","name":"canBlock"},{"id":365,"kind":"name","name":"Block"},{"id":373,"kind":"app","opcode":"ite","args":[{"id":366,"kind":"name","name":"canTakeCenter"},{"id":367,"kind":"name","name":"TakeCenter"},{"id":372,"kind":"app","opcode":"ite","args":[{"id":368,"kind":"name","name":"canSetupWin"},{"id":369,"kind":"name","name":"SetupWin"},{"id":371,"kind":"app","opcode":"MoveToEmpty","args":[{"id":370,"kind":"str","value":"X"}]}]}]}]}]}]},{"id":379,"kind":"app","opcode":"assign","args":[{"id":378,"kind":"name","name":"nextTurn"},{"id":377,"kind":"str","value":"O"}]}]}},{"doc":"Either X or O will make a move, depending on the value of `nextTurn`","id":426,"kind":"def","name":"step","qualifier":"action","expr":{"id":425,"kind":"app","opcode":"actionAny","args":[{"id":415,"kind":"name","name":"MoveX"},{"id":416,"kind":"name","name":"MoveO"},{"id":424,"kind":"app","opcode":"actionAll","args":[{"id":417,"kind":"name","name":"gameOver"},{"id":420,"kind":"app","opcode":"assign","args":[{"id":419,"kind":"name","name":"board"},{"id":418,"kind":"name","name":"board"}]},{"id":423,"kind":"app","opcode":"assign","args":[{"id":422,"kind":"name","name":"nextTurn"},{"id":421,"kind":"name","name":"nextTurn"}]}]}]}}]}],"table":{"115":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"116":{"id":113,"name":"coordinate","kind":"param"},"120":{"id":113,"name":"coordinate","kind":"param"},"124":{"id":114,"name":"player","kind":"param"},"128":{"id":127,"name":"coordinate","kind":"param"},"130":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"132":{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},"133":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"137":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"139":{"id":138,"name":"pattern","kind":"param"},"141":{"id":140,"name":"coordinate","kind":"param"},"142":{"id":136,"name":"player","kind":"param"},"143":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"149":{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},"150":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"154":{"id":153,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":152,"kind":"app","opcode":"not","args":[{"id":151,"kind":"app","opcode":"exists","args":[{"id":149,"kind":"name","name":"boardCoordinates"},{"id":150,"kind":"name","name":"isEmpty"}]}]}},"156":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"160":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"165":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"167":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"169":{"id":153,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":152,"kind":"app","opcode":"not","args":[{"id":151,"kind":"app","opcode":"exists","args":[{"id":149,"kind":"name","name":"boardCoordinates"},{"id":150,"kind":"name","name":"isEmpty"}]}]}},"173":{"id":172,"name":"pattern","kind":"param"},"175":{"id":174,"name":"coordinate","kind":"param"},"177":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"183":{"id":172,"name":"pattern","kind":"param"},"185":{"id":184,"name":"coordinate","kind":"param"},"186":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"195":{"id":194,"name":"pattern","kind":"param"},"197":{"id":196,"name":"coordinate","kind":"param"},"199":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"205":{"id":194,"name":"pattern","kind":"param"},"207":{"id":206,"name":"coordinate","kind":"param"},"208":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"217":{"id":216,"name":"pattern","kind":"param"},"219":{"id":218,"name":"coordinate","kind":"param"},"221":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"227":{"id":216,"name":"pattern","kind":"param"},"229":{"id":228,"name":"coordinate","kind":"param"},"230":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"238":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"239":{"id":193,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":193,"kind":"lambda","params":[{"id":172,"name":"pattern"}],"qualifier":"def","expr":{"id":192,"kind":"app","opcode":"and","args":[{"id":182,"kind":"app","opcode":"eq","args":[{"id":180,"kind":"app","opcode":"size","args":[{"id":179,"kind":"app","opcode":"filter","args":[{"id":173,"kind":"name","name":"pattern"},{"id":178,"kind":"lambda","params":[{"id":174,"name":"coordinate"}],"qualifier":"def","expr":{"id":177,"kind":"app","opcode":"hasValue","args":[{"id":175,"kind":"name","name":"coordinate"},{"id":176,"kind":"str","value":"X"}]}}]}]},{"id":181,"kind":"int","value":2}]},{"id":191,"kind":"app","opcode":"eq","args":[{"id":189,"kind":"app","opcode":"size","args":[{"id":188,"kind":"app","opcode":"filter","args":[{"id":183,"kind":"name","name":"pattern"},{"id":187,"kind":"lambda","params":[{"id":184,"name":"coordinate"}],"qualifier":"def","expr":{"id":186,"kind":"app","opcode":"isEmpty","args":[{"id":185,"kind":"name","name":"coordinate"}]}}]}]},{"id":190,"kind":"int","value":1}]}]}}},"242":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"243":{"id":215,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":215,"kind":"lambda","params":[{"id":194,"name":"pattern"}],"qualifier":"def","expr":{"id":214,"kind":"app","opcode":"and","args":[{"id":204,"kind":"app","opcode":"eq","args":[{"id":202,"kind":"app","opcode":"size","args":[{"id":201,"kind":"app","opcode":"filter","args":[{"id":195,"kind":"name","name":"pattern"},{"id":200,"kind":"lambda","params":[{"id":196,"name":"coordinate"}],"qualifier":"def","expr":{"id":199,"kind":"app","opcode":"hasValue","args":[{"id":197,"kind":"name","name":"coordinate"},{"id":198,"kind":"str","value":"O"}]}}]}]},{"id":203,"kind":"int","value":2}]},{"id":213,"kind":"app","opcode":"eq","args":[{"id":211,"kind":"app","opcode":"size","args":[{"id":210,"kind":"app","opcode":"filter","args":[{"id":205,"kind":"name","name":"pattern"},{"id":209,"kind":"lambda","params":[{"id":206,"name":"coordinate"}],"qualifier":"def","expr":{"id":208,"kind":"app","opcode":"isEmpty","args":[{"id":207,"kind":"name","name":"coordinate"}]}}]}]},{"id":212,"kind":"int","value":1}]}]}}},"249":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"251":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"252":{"id":237,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":237,"kind":"lambda","params":[{"id":216,"name":"pattern"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"and","args":[{"id":226,"kind":"app","opcode":"eq","args":[{"id":224,"kind":"app","opcode":"size","args":[{"id":223,"kind":"app","opcode":"filter","args":[{"id":217,"kind":"name","name":"pattern"},{"id":222,"kind":"lambda","params":[{"id":218,"name":"coordinate"}],"qualifier":"def","expr":{"id":221,"kind":"app","opcode":"hasValue","args":[{"id":219,"kind":"name","name":"coordinate"},{"id":220,"kind":"str","value":"X"}]}}]}]},{"id":225,"kind":"int","value":1}]},{"id":235,"kind":"app","opcode":"eq","args":[{"id":233,"kind":"app","opcode":"size","args":[{"id":232,"kind":"app","opcode":"filter","args":[{"id":227,"kind":"name","name":"pattern"},{"id":231,"kind":"lambda","params":[{"id":228,"name":"coordinate"}],"qualifier":"def","expr":{"id":230,"kind":"app","opcode":"isEmpty","args":[{"id":229,"kind":"name","name":"coordinate"}]}}]}]},{"id":234,"kind":"int","value":2}]}]}}},"257":{"id":256,"name":"coordinate","kind":"param"},"258":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"259":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"260":{"id":256,"name":"coordinate","kind":"param"},"264":{"id":263,"name":"row","kind":"param"},"265":{"id":256,"name":"coordinate","kind":"param"},"268":{"id":255,"name":"player","kind":"param"},"272":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"276":{"id":241,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":240,"kind":"app","opcode":"exists","args":[{"id":238,"kind":"name","name":"winningPatterns"},{"id":239,"kind":"name","name":"canWinWithPattern"}]}},"277":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"278":{"id":193,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":193,"kind":"lambda","params":[{"id":172,"name":"pattern"}],"qualifier":"def","expr":{"id":192,"kind":"app","opcode":"and","args":[{"id":182,"kind":"app","opcode":"eq","args":[{"id":180,"kind":"app","opcode":"size","args":[{"id":179,"kind":"app","opcode":"filter","args":[{"id":173,"kind":"name","name":"pattern"},{"id":178,"kind":"lambda","params":[{"id":174,"name":"coordinate"}],"qualifier":"def","expr":{"id":177,"kind":"app","opcode":"hasValue","args":[{"id":175,"kind":"name","name":"coordinate"},{"id":176,"kind":"str","value":"X"}]}}]}]},{"id":181,"kind":"int","value":2}]},{"id":191,"kind":"app","opcode":"eq","args":[{"id":189,"kind":"app","opcode":"size","args":[{"id":188,"kind":"app","opcode":"filter","args":[{"id":183,"kind":"name","name":"pattern"},{"id":187,"kind":"lambda","params":[{"id":184,"name":"coordinate"}],"qualifier":"def","expr":{"id":186,"kind":"app","opcode":"isEmpty","args":[{"id":185,"kind":"name","name":"coordinate"}]}}]}]},{"id":190,"kind":"int","value":1}]}]}}},"282":{"id":281,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":280,"kind":"app","opcode":"oneOf","args":[{"id":279,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"winningPatterns"},{"id":278,"kind":"name","name":"canWinWithPattern"}]}]}},"283":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"288":{"id":286,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":285,"kind":"app","opcode":"oneOf","args":[{"id":284,"kind":"app","opcode":"filter","args":[{"id":282,"kind":"name","name":"pattern"},{"id":283,"kind":"name","name":"isEmpty"}]}]}},"289":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"294":{"id":245,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":244,"kind":"app","opcode":"exists","args":[{"id":242,"kind":"name","name":"winningPatterns"},{"id":243,"kind":"name","name":"canBlockWithPattern"}]}},"295":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"296":{"id":215,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":215,"kind":"lambda","params":[{"id":194,"name":"pattern"}],"qualifier":"def","expr":{"id":214,"kind":"app","opcode":"and","args":[{"id":204,"kind":"app","opcode":"eq","args":[{"id":202,"kind":"app","opcode":"size","args":[{"id":201,"kind":"app","opcode":"filter","args":[{"id":195,"kind":"name","name":"pattern"},{"id":200,"kind":"lambda","params":[{"id":196,"name":"coordinate"}],"qualifier":"def","expr":{"id":199,"kind":"app","opcode":"hasValue","args":[{"id":197,"kind":"name","name":"coordinate"},{"id":198,"kind":"str","value":"O"}]}}]}]},{"id":203,"kind":"int","value":2}]},{"id":213,"kind":"app","opcode":"eq","args":[{"id":211,"kind":"app","opcode":"size","args":[{"id":210,"kind":"app","opcode":"filter","args":[{"id":205,"kind":"name","name":"pattern"},{"id":209,"kind":"lambda","params":[{"id":206,"name":"coordinate"}],"qualifier":"def","expr":{"id":208,"kind":"app","opcode":"isEmpty","args":[{"id":207,"kind":"name","name":"coordinate"}]}}]}]},{"id":212,"kind":"int","value":1}]}]}}},"300":{"id":299,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":298,"kind":"app","opcode":"oneOf","args":[{"id":297,"kind":"app","opcode":"filter","args":[{"id":295,"kind":"name","name":"winningPatterns"},{"id":296,"kind":"name","name":"canBlockWithPattern"}]}]}},"301":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"306":{"id":304,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":303,"kind":"app","opcode":"oneOf","args":[{"id":302,"kind":"app","opcode":"filter","args":[{"id":300,"kind":"name","name":"pattern"},{"id":301,"kind":"name","name":"isEmpty"}]}]}},"307":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"316":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"318":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"319":{"id":237,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":237,"kind":"lambda","params":[{"id":216,"name":"pattern"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"and","args":[{"id":226,"kind":"app","opcode":"eq","args":[{"id":224,"kind":"app","opcode":"size","args":[{"id":223,"kind":"app","opcode":"filter","args":[{"id":217,"kind":"name","name":"pattern"},{"id":222,"kind":"lambda","params":[{"id":218,"name":"coordinate"}],"qualifier":"def","expr":{"id":221,"kind":"app","opcode":"hasValue","args":[{"id":219,"kind":"name","name":"coordinate"},{"id":220,"kind":"str","value":"X"}]}}]}]},{"id":225,"kind":"int","value":1}]},{"id":235,"kind":"app","opcode":"eq","args":[{"id":233,"kind":"app","opcode":"size","args":[{"id":232,"kind":"app","opcode":"filter","args":[{"id":227,"kind":"name","name":"pattern"},{"id":231,"kind":"lambda","params":[{"id":228,"name":"coordinate"}],"qualifier":"def","expr":{"id":230,"kind":"app","opcode":"isEmpty","args":[{"id":229,"kind":"name","name":"coordinate"}]}}]}]},{"id":234,"kind":"int","value":2}]}]}}},"323":{"id":322,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":321,"kind":"app","opcode":"oneOf","args":[{"id":320,"kind":"app","opcode":"filter","args":[{"id":318,"kind":"name","name":"winningPatterns"},{"id":319,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"324":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"329":{"id":327,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":326,"kind":"app","opcode":"oneOf","args":[{"id":325,"kind":"app","opcode":"filter","args":[{"id":323,"kind":"name","name":"pattern"},{"id":324,"kind":"name","name":"isEmpty"}]}]}},"330":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"336":{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},"337":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"341":{"id":335,"name":"player","kind":"param"},"342":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"343":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"346":{"id":112,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":111,"kind":"app","opcode":"Set","args":[{"id":101,"kind":"app","opcode":"Tup","args":[{"id":99,"kind":"int","value":1},{"id":100,"kind":"int","value":1}]},{"id":104,"kind":"app","opcode":"Tup","args":[{"id":102,"kind":"int","value":3},{"id":103,"kind":"int","value":1}]},{"id":107,"kind":"app","opcode":"Tup","args":[{"id":105,"kind":"int","value":1},{"id":106,"kind":"int","value":3}]},{"id":110,"kind":"app","opcode":"Tup","args":[{"id":108,"kind":"int","value":3},{"id":109,"kind":"int","value":3}]}]}},"350":{"id":348,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":347,"kind":"app","opcode":"oneOf","args":[{"id":346,"kind":"name","name":"corners"}]}},"351":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"354":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"358":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"360":{"id":135,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":134,"kind":"app","opcode":"forall","args":[{"id":132,"kind":"name","name":"boardCoordinates"},{"id":133,"kind":"name","name":"isEmpty"}]}},"361":{"id":353,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":352,"kind":"let","opdef":{"id":348,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":347,"kind":"app","opcode":"oneOf","args":[{"id":346,"kind":"name","name":"corners"}]}},"expr":{"id":351,"kind":"app","opcode":"Move","args":[{"id":349,"kind":"str","value":"X"},{"id":350,"kind":"name","name":"corner"}]}}},"362":{"id":241,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":240,"kind":"app","opcode":"exists","args":[{"id":238,"kind":"name","name":"winningPatterns"},{"id":239,"kind":"name","name":"canWinWithPattern"}]}},"363":{"id":293,"kind":"def","name":"Win","qualifier":"action","expr":{"id":292,"kind":"app","opcode":"actionAll","args":[{"id":276,"kind":"name","name":"canWin"},{"id":291,"kind":"let","opdef":{"id":281,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":280,"kind":"app","opcode":"oneOf","args":[{"id":279,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"winningPatterns"},{"id":278,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":290,"kind":"let","opdef":{"id":286,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":285,"kind":"app","opcode":"oneOf","args":[{"id":284,"kind":"app","opcode":"filter","args":[{"id":282,"kind":"name","name":"pattern"},{"id":283,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":289,"kind":"app","opcode":"Move","args":[{"id":287,"kind":"str","value":"X"},{"id":288,"kind":"name","name":"coordinate"}]}}}]}},"364":{"id":245,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":244,"kind":"app","opcode":"exists","args":[{"id":242,"kind":"name","name":"winningPatterns"},{"id":243,"kind":"name","name":"canBlockWithPattern"}]}},"365":{"id":311,"kind":"def","name":"Block","qualifier":"action","expr":{"id":310,"kind":"app","opcode":"actionAll","args":[{"id":294,"kind":"name","name":"canBlock"},{"id":309,"kind":"let","opdef":{"id":299,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":298,"kind":"app","opcode":"oneOf","args":[{"id":297,"kind":"app","opcode":"filter","args":[{"id":295,"kind":"name","name":"winningPatterns"},{"id":296,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":308,"kind":"let","opdef":{"id":304,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":303,"kind":"app","opcode":"oneOf","args":[{"id":302,"kind":"app","opcode":"filter","args":[{"id":300,"kind":"name","name":"pattern"},{"id":301,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":307,"kind":"app","opcode":"Move","args":[{"id":305,"kind":"str","value":"X"},{"id":306,"kind":"name","name":"coordinate"}]}}}]}},"366":{"id":250,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":249,"kind":"app","opcode":"isEmpty","args":[{"id":248,"kind":"app","opcode":"Tup","args":[{"id":246,"kind":"int","value":2},{"id":247,"kind":"int","value":2}]}]}},"367":{"id":317,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":316,"kind":"app","opcode":"Move","args":[{"id":312,"kind":"str","value":"X"},{"id":315,"kind":"app","opcode":"Tup","args":[{"id":313,"kind":"int","value":2},{"id":314,"kind":"int","value":2}]}]}},"368":{"id":254,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":253,"kind":"app","opcode":"exists","args":[{"id":251,"kind":"name","name":"winningPatterns"},{"id":252,"kind":"name","name":"canSetupWinWithPattern"}]}},"369":{"id":334,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":333,"kind":"app","opcode":"actionAll","args":[{"id":332,"kind":"let","opdef":{"id":322,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":321,"kind":"app","opcode":"oneOf","args":[{"id":320,"kind":"app","opcode":"filter","args":[{"id":318,"kind":"name","name":"winningPatterns"},{"id":319,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":331,"kind":"let","opdef":{"id":327,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":326,"kind":"app","opcode":"oneOf","args":[{"id":325,"kind":"app","opcode":"filter","args":[{"id":323,"kind":"name","name":"pattern"},{"id":324,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":330,"kind":"app","opcode":"Move","args":[{"id":328,"kind":"str","value":"X"},{"id":329,"kind":"name","name":"coordinate"}]}}}]}},"371":{"id":345,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":345,"kind":"lambda","params":[{"id":335,"name":"player"}],"qualifier":"action","expr":{"id":344,"kind":"let","opdef":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":343,"kind":"app","opcode":"Move","args":[{"id":341,"kind":"name","name":"player"},{"id":342,"kind":"name","name":"coordinate"}]}}}},"378":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"382":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"386":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"389":{"id":345,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":345,"kind":"lambda","params":[{"id":335,"name":"player"}],"qualifier":"action","expr":{"id":344,"kind":"let","opdef":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":343,"kind":"app","opcode":"Move","args":[{"id":341,"kind":"name","name":"player"},{"id":342,"kind":"name","name":"coordinate"}]}}}},"391":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"396":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"411":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"415":{"id":381,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":380,"kind":"app","opcode":"actionAll","args":[{"id":356,"kind":"app","opcode":"eq","args":[{"id":354,"kind":"name","name":"nextTurn"},{"id":355,"kind":"str","value":"X"}]},{"id":359,"kind":"app","opcode":"not","args":[{"id":358,"kind":"app","opcode":"won","args":[{"id":357,"kind":"str","value":"O"}]}]},{"id":376,"kind":"app","opcode":"ite","args":[{"id":360,"kind":"name","name":"boardEmpty"},{"id":361,"kind":"name","name":"StartInCorner"},{"id":375,"kind":"app","opcode":"ite","args":[{"id":362,"kind":"name","name":"canWin"},{"id":363,"kind":"name","name":"Win"},{"id":374,"kind":"app","opcode":"ite","args":[{"id":364,"kind":"name","name":"canBlock"},{"id":365,"kind":"name","name":"Block"},{"id":373,"kind":"app","opcode":"ite","args":[{"id":366,"kind":"name","name":"canTakeCenter"},{"id":367,"kind":"name","name":"TakeCenter"},{"id":372,"kind":"app","opcode":"ite","args":[{"id":368,"kind":"name","name":"canSetupWin"},{"id":369,"kind":"name","name":"SetupWin"},{"id":371,"kind":"app","opcode":"MoveToEmpty","args":[{"id":370,"kind":"str","value":"X"}]}]}]}]}]}]},{"id":379,"kind":"app","opcode":"assign","args":[{"id":378,"kind":"name","name":"nextTurn"},{"id":377,"kind":"str","value":"O"}]}]}},"416":{"id":394,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":393,"kind":"app","opcode":"actionAll","args":[{"id":384,"kind":"app","opcode":"eq","args":[{"id":382,"kind":"name","name":"nextTurn"},{"id":383,"kind":"str","value":"O"}]},{"id":387,"kind":"app","opcode":"not","args":[{"id":386,"kind":"app","opcode":"won","args":[{"id":385,"kind":"str","value":"X"}]}]},{"id":389,"kind":"app","opcode":"MoveToEmpty","args":[{"id":388,"kind":"str","value":"O"}]},{"id":392,"kind":"app","opcode":"assign","args":[{"id":391,"kind":"name","name":"nextTurn"},{"id":390,"kind":"str","value":"X"}]}]}},"417":{"id":171,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":170,"kind":"app","opcode":"or","args":[{"id":168,"kind":"app","opcode":"or","args":[{"id":165,"kind":"app","opcode":"won","args":[{"id":164,"kind":"str","value":"X"}]},{"id":167,"kind":"app","opcode":"won","args":[{"id":166,"kind":"str","value":"O"}]}]},{"id":169,"kind":"name","name":"boardFull"}]}},"418":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"419":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"421":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"422":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"428":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"432":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"435":{"id":163,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":162,"kind":"app","opcode":"and","args":[{"id":158,"kind":"app","opcode":"and","args":[{"id":154,"kind":"name","name":"boardFull"},{"id":157,"kind":"app","opcode":"not","args":[{"id":156,"kind":"app","opcode":"won","args":[{"id":155,"kind":"str","value":"X"}]}]}]},{"id":161,"kind":"app","opcode":"not","args":[{"id":160,"kind":"app","opcode":"won","args":[{"id":159,"kind":"str","value":"O"}]}]}]}},"438":{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":434,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":433,"kind":"app","opcode":"not","args":[{"id":432,"kind":"app","opcode":"won","args":[{"id":431,"kind":"str","value":"O"}]}]}},"441":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}}},"types":{"6":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"8":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"9":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"10":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"11":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"12":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"13":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"14":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"15":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"16":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"17":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"18":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"19":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"20":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"21":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"22":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"23":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"24":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"25":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"26":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"27":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"28":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"29":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"30":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"31":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"32":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"33":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"34":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"35":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"36":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"37":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"38":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"39":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"40":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"41":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"42":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"43":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"44":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"45":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"46":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"47":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"48":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"49":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"50":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"51":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"52":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"53":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"54":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"55":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"56":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"57":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"58":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"59":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"60":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"61":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"62":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"63":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"64":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"65":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"66":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"67":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"68":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"69":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"70":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"71":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"72":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"73":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"74":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"75":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"76":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"77":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"78":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"79":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"80":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"81":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"82":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"83":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"84":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"85":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"86":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"87":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"88":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"89":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"90":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"91":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"92":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"93":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"94":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"95":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"96":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"97":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"98":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"99":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"100":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"101":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"102":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"103":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"104":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"105":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"106":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"107":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"108":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"109":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"110":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"111":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"112":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"113":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}}},"114":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"115":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"116":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}}},"117":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"118":{"typeVariables":{},"rowVariables":{},"type":{"id":1,"kind":"int"}},"119":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4}},"120":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}}},"121":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"122":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"int"}},"123":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"124":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"125":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"126":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}},{"id":3,"kind":"str"}],"res":{"id":3,"kind":"bool"}}},"127":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t78"}}}}},"128":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t78"}}}}},"129":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"130":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"131":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t78"}}}}],"res":{"id":3,"kind":"bool"}}},"132":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"133":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"134":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"135":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"136":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"137":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"138":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}},"139":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}},"140":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}},"141":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}},"142":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"143":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"144":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"145":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"146":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":6,"kind":"bool"}}},"147":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"148":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"str"}],"res":{"id":6,"kind":"bool"}}},"149":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"150":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"151":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"152":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"153":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"154":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"155":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"156":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"157":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"158":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"159":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"160":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"161":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"162":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"163":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"164":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"165":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"166":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"167":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"168":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"169":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"170":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"171":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"172":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}},"173":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}},"174":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"175":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"176":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"177":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"178":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}],"res":{"id":3,"kind":"bool"}}},"179":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":7}},"180":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"181":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"182":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"183":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}},"184":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"185":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"186":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"187":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}],"res":{"id":3,"kind":"bool"}}},"188":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":7}},"189":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"190":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"191":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"192":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"193":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"194":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}},"195":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}},"196":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"197":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"198":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"199":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"200":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}],"res":{"id":3,"kind":"bool"}}},"201":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":7}},"202":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"203":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"204":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"205":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}},"206":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"207":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"208":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"209":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}],"res":{"id":3,"kind":"bool"}}},"210":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":7}},"211":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"212":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"213":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"214":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"215":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"216":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}},"217":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}},"218":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"219":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"220":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"221":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"222":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}],"res":{"id":3,"kind":"bool"}}},"223":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":7}},"224":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"225":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"226":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"227":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}},"228":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"229":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"230":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"231":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}],"res":{"id":3,"kind":"bool"}}},"232":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":7}},"233":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"234":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"235":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"236":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"237":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"238":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"239":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"240":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"241":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"242":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"243":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"244":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"245":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"246":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"247":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"248":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"249":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"250":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"251":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"252":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"253":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"254":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"255":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"256":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"257":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"258":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"259":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"260":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"261":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"262":{"typeVariables":{},"rowVariables":{},"type":{"id":1,"kind":"int"}},"263":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":3}},"264":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":3}},"265":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"266":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"267":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"int"}},"268":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"269":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":8}},"270":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":3}],"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":8}}},"271":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":10}},"272":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"273":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"274":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"275":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"str"},{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}],"res":{"id":3,"kind":"bool"}}},"276":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"277":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"278":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"279":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"280":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"281":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"282":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"283":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"284":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"285":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"286":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"287":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"288":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"289":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"290":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"291":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"292":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"293":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"294":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"295":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"296":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"297":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"298":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"299":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"300":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"301":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"302":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"303":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"304":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"305":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"306":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"307":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"308":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"309":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"310":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"311":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"312":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"313":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"314":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"315":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"316":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"317":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"318":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"319":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"320":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"321":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"322":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"323":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"324":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"325":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"326":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"327":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"328":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"329":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"330":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"331":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"332":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"333":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"334":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"335":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"336":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"337":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"338":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":7}},"339":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"340":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"341":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"342":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"343":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"344":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"345":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"str"}],"res":{"id":3,"kind":"bool"}}},"346":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"347":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"348":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"349":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"350":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"351":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"352":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"353":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"354":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"355":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"356":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"357":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"358":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"359":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"360":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"361":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"362":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"363":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"364":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"365":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"366":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"367":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"368":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"369":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"370":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"371":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"372":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"373":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"374":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"375":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"376":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"377":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"378":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"379":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"380":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"381":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"382":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"383":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"384":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"385":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"386":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"387":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"388":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"389":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"390":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"391":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"392":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"393":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"394":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"395":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"396":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"397":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"398":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"399":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"400":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"401":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"402":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"403":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"404":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"405":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"406":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"407":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"str"}}},"408":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"str"},"id":8}},"409":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"str"},"id":8}}},"410":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"str"},"id":8},"id":8}},"411":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"412":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"413":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"414":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"415":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"416":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"417":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"418":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"419":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"420":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"421":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"422":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"423":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"424":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"425":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"426":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"427":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"428":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"429":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"430":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"431":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"432":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"433":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"434":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"435":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"436":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"437":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"438":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"439":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"440":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"441":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"442":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"443":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}}},"effects":{"6":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"8":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"9":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"10":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"11":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"12":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"13":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"14":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"15":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"16":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"17":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"18":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"19":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"20":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"21":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"22":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"23":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"24":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"25":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"26":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"27":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"28":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"29":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"30":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"31":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"32":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"33":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"34":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"35":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"36":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"37":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"38":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"39":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"40":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"41":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"42":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"43":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"44":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"45":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"46":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"47":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"48":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"49":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"50":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"51":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"52":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"53":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"54":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"55":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"56":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"57":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"58":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"59":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"60":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"61":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"62":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"63":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"64":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"65":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"66":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"67":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"68":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"69":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"70":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"71":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"72":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"73":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"74":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"75":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"76":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"77":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"78":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"79":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"80":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"81":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"82":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"83":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"84":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"85":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"86":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"87":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"88":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"89":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"90":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"91":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"92":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"93":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"94":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"95":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"96":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"97":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"98":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"99":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"100":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"101":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"102":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"103":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"104":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"105":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"106":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"107":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"108":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"109":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"110":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"111":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"112":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"113":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"114":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v208"}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]},"effectVariables":{},"entityVariables":{}},"115":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"116":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"117":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"118":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"119":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"120":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"121":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"122":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"123":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"124":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v208"}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]},"effectVariables":{},"entityVariables":{}},"125":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"variable","name":"v208"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]},"effectVariables":{},"entityVariables":{}},"126":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v208"}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"variable","name":"v208"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]}}},"127":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v234"}}]},"effectVariables":{},"entityVariables":{}},"128":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v234"}}]},"effectVariables":{},"entityVariables":{}},"129":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"130":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v234"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"131":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v234"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v234"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"132":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"133":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"134":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"135":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"136":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v238"}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"137":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"138":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v240"}}]},"effectVariables":{},"entityVariables":{}},"139":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v240"}}]},"effectVariables":{},"entityVariables":{}},"140":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v237"}}]},"effectVariables":{},"entityVariables":{}},"141":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v237"}}]},"effectVariables":{},"entityVariables":{}},"142":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v238"}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"143":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v237"},{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"144":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v240"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v240"},{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}},"effectVariables":{},"entityVariables":{}},"145":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v240"},{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"146":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}},"effectVariables":{},"entityVariables":{}},"147":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"148":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v238"}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}}},"149":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"150":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"151":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"152":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"153":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"154":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"155":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"156":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"157":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"158":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"159":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"160":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"161":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"162":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"163":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"164":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"165":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"166":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"167":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"168":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"169":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"170":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"171":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"172":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]},"effectVariables":{},"entityVariables":{}},"173":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]},"effectVariables":{},"entityVariables":{}},"174":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v262"}}]},"effectVariables":{},"entityVariables":{}},"175":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v262"}}]},"effectVariables":{},"entityVariables":{}},"176":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"177":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v262"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"178":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"179":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"180":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"181":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"182":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"183":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]},"effectVariables":{},"entityVariables":{}},"184":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v276"}}]},"effectVariables":{},"entityVariables":{}},"185":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v276"}}]},"effectVariables":{},"entityVariables":{}},"186":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v276"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"187":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"188":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"189":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"190":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"191":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"192":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"193":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"194":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]},"effectVariables":{},"entityVariables":{}},"195":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]},"effectVariables":{},"entityVariables":{}},"196":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v292"}}]},"effectVariables":{},"entityVariables":{}},"197":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v292"}}]},"effectVariables":{},"entityVariables":{}},"198":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"199":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v292"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"200":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"201":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"202":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"203":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"204":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"205":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]},"effectVariables":{},"entityVariables":{}},"206":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v306"}}]},"effectVariables":{},"entityVariables":{}},"207":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v306"}}]},"effectVariables":{},"entityVariables":{}},"208":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v306"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"209":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"210":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"211":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"212":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"213":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"214":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"215":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"216":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]},"effectVariables":{},"entityVariables":{}},"217":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]},"effectVariables":{},"entityVariables":{}},"218":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v322"}}]},"effectVariables":{},"entityVariables":{}},"219":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v322"}}]},"effectVariables":{},"entityVariables":{}},"220":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"221":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v322"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"222":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"223":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"224":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"225":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"226":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"227":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]},"effectVariables":{},"entityVariables":{}},"228":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v336"}}]},"effectVariables":{},"entityVariables":{}},"229":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v336"}}]},"effectVariables":{},"entityVariables":{}},"230":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v336"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"231":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"232":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"233":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"234":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"235":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"236":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"237":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"238":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"239":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"240":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"241":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"242":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"243":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"244":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"245":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"246":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"247":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"248":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"249":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"250":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"251":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"252":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"253":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"254":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"255":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v364"}}]},"effectVariables":{},"entityVariables":{}},"256":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"257":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"258":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"259":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"260":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"261":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"262":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"263":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v360"}},{"kind":"temporal","entity":{"kind":"variable","name":"v361"}}]},"effectVariables":{},"entityVariables":{}},"264":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v360"}},{"kind":"temporal","entity":{"kind":"variable","name":"v361"}}]},"effectVariables":{},"entityVariables":{}},"265":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"266":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"267":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"268":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v364"}},{"kind":"temporal","entity":{"kind":"variable","name":"v365"}}]},"effectVariables":{},"entityVariables":{}},"269":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v360"},{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"}]}},{"kind":"temporal","entity":{"kind":"union","entities":[{"kind":"variable","name":"v361"},{"kind":"variable","name":"v365"}]}}]},"effectVariables":{},"entityVariables":{}},"270":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[]}}]}},"effectVariables":{},"entityVariables":{}},"271":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"272":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"273":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"274":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"275":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v364"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}}},"276":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"277":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"278":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"279":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"280":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"281":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"282":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"283":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"284":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"285":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"286":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"287":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"288":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"289":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"290":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"291":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"292":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"293":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"294":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"295":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"296":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"297":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"298":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"299":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"300":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"301":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"302":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"303":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"304":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"305":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"306":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"307":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"308":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"309":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"310":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"311":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"312":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"313":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"314":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"315":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"316":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"317":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"318":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"319":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"320":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"321":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"322":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"323":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"324":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"325":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"326":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"327":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"328":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"329":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"330":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"331":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"332":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"333":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"334":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"335":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v463"}}]},"effectVariables":{},"entityVariables":{}},"336":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"337":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"338":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"339":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"340":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"341":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v463"}}]},"effectVariables":{},"entityVariables":{}},"342":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"343":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v463"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"344":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v463"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"345":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v463"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v463"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}}},"346":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"347":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"348":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"349":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"350":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"351":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"352":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"353":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"354":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"355":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"356":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"357":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"358":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"359":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"360":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"361":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"362":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"363":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"364":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"365":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"366":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"367":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"368":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"369":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"370":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"371":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"372":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"373":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"374":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"375":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"376":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"377":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"378":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"379":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"380":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"381":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"382":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"383":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"384":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"385":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"386":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"387":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"388":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"389":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"390":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"391":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"392":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"393":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"394":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"395":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"396":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"397":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"398":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"399":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"400":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"401":{"effect":{"kind":"variable","name":"e48"},"effectVariables":{},"entityVariables":{}},"402":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"403":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"404":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"405":{"effect":{"kind":"variable","name":"e50"},"effectVariables":{},"entityVariables":{}},"406":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"407":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"408":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"409":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"410":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"411":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"412":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"413":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"414":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"415":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"416":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"417":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"418":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"419":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"420":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"421":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"422":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"423":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"424":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"425":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"426":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"427":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"428":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"429":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"430":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"431":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"432":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"433":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"434":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"435":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"436":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"437":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"438":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"439":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"440":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"441":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"442":{"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"443":{"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}}}}
\ No newline at end of file
+{"stage":"typechecking","warnings":[],"modules":[{"id":495,"name":"tictactoe","declarations":[{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]}},{"id":136,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":135,"kind":"app","opcode":"Set","args":[{"id":125,"kind":"app","opcode":"Tup","args":[{"id":123,"kind":"int","value":1},{"id":124,"kind":"int","value":1}]},{"id":128,"kind":"app","opcode":"Tup","args":[{"id":126,"kind":"int","value":3},{"id":127,"kind":"int","value":1}]},{"id":131,"kind":"app","opcode":"Tup","args":[{"id":129,"kind":"int","value":1},{"id":130,"kind":"int","value":3}]},{"id":134,"kind":"app","opcode":"Tup","args":[{"id":132,"kind":"int","value":3},{"id":133,"kind":"int","value":3}]}]}},{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]}},{"id":11,"kind":"def","name":"O","qualifier":"val","typeAnnotation":{"id":3,"kind":"const","name":"Player"},"expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]}},{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},{"id":7,"kind":"def","name":"X","qualifier":"val","typeAnnotation":{"id":3,"kind":"const","name":"Player"},"expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]}},{"id":20,"kind":"def","name":"Occupied","qualifier":"def","typeAnnotation":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":14,"kind":"const","name":"Square"}},"expr":{"id":19,"kind":"lambda","params":[{"id":16,"name":"__OccupiedParam"}],"qualifier":"def","expr":{"id":18,"kind":"app","opcode":"variant","args":[{"id":15,"kind":"str","value":"Occupied"},{"kind":"name","name":"__OccupiedParam","id":17}]}}},{"id":24,"kind":"def","name":"Empty","qualifier":"val","typeAnnotation":{"id":14,"kind":"const","name":"Square"},"expr":{"id":23,"kind":"app","opcode":"variant","args":[{"id":21,"kind":"str","value":"Empty"},{"id":22,"kind":"app","opcode":"Rec","args":[]}]}},{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},{"id":152,"kind":"def","name":"square","qualifier":"def","expr":{"id":152,"kind":"lambda","params":[{"id":137,"name":"coordinate"}],"qualifier":"def","expr":{"id":150,"kind":"app","opcode":"get","args":[{"id":146,"kind":"app","opcode":"get","args":[{"id":142,"kind":"name","name":"board"},{"id":145,"kind":"app","opcode":"item","args":[{"id":143,"kind":"name","name":"coordinate"},{"id":144,"kind":"int","value":1}]}]},{"id":149,"kind":"app","opcode":"item","args":[{"id":147,"kind":"name","name":"coordinate"},{"id":148,"kind":"int","value":2}]}]}},"typeAnnotation":{"id":151,"kind":"oper","args":[{"id":140,"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":138,"kind":"int"}},{"fieldName":"1","fieldType":{"id":139,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"id":141,"kind":"const","name":"Square"}}},{"id":465,"kind":"def","name":"init","qualifier":"action","expr":{"id":464,"kind":"app","opcode":"actionAll","args":[{"id":448,"kind":"app","opcode":"assign","args":[{"id":447,"kind":"name","name":"nextTurn"},{"id":446,"kind":"name","name":"X"}]},{"id":463,"kind":"app","opcode":"assign","args":[{"id":462,"kind":"name","name":"board"},{"id":461,"kind":"app","opcode":"mapBy","args":[{"id":451,"kind":"app","opcode":"to","args":[{"id":449,"kind":"int","value":1},{"id":450,"kind":"int","value":3}]},{"id":460,"kind":"lambda","params":[{"id":452,"name":"_"}],"qualifier":"def","expr":{"id":459,"kind":"app","opcode":"mapBy","args":[{"id":455,"kind":"app","opcode":"to","args":[{"id":453,"kind":"int","value":1},{"id":454,"kind":"int","value":3}]},{"id":458,"kind":"lambda","params":[{"id":456,"name":"_"}],"qualifier":"def","expr":{"id":457,"kind":"name","name":"Empty"}}]}}]}]}]}},{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}}},{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}}},{"id":185,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":184,"kind":"app","opcode":"forall","args":[{"id":182,"kind":"name","name":"boardCoordinates"},{"id":183,"kind":"name","name":"isEmpty"}]}},{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}}},{"id":203,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":202,"kind":"app","opcode":"not","args":[{"id":201,"kind":"app","opcode":"exists","args":[{"id":199,"kind":"name","name":"boardCoordinates"},{"id":200,"kind":"name","name":"isEmpty"}]}]}},{"id":243,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":243,"kind":"lambda","params":[{"id":222,"name":"pattern"}],"qualifier":"def","expr":{"id":242,"kind":"app","opcode":"and","args":[{"id":232,"kind":"app","opcode":"eq","args":[{"id":230,"kind":"app","opcode":"size","args":[{"id":229,"kind":"app","opcode":"filter","args":[{"id":223,"kind":"name","name":"pattern"},{"id":228,"kind":"lambda","params":[{"id":224,"name":"coordinate"}],"qualifier":"def","expr":{"id":227,"kind":"app","opcode":"hasPlayer","args":[{"id":225,"kind":"name","name":"coordinate"},{"id":226,"kind":"name","name":"X"}]}}]}]},{"id":231,"kind":"int","value":2}]},{"id":241,"kind":"app","opcode":"eq","args":[{"id":239,"kind":"app","opcode":"size","args":[{"id":238,"kind":"app","opcode":"filter","args":[{"id":233,"kind":"name","name":"pattern"},{"id":237,"kind":"lambda","params":[{"id":234,"name":"coordinate"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"isEmpty","args":[{"id":235,"kind":"name","name":"coordinate"}]}}]}]},{"id":240,"kind":"int","value":1}]}]}}},{"id":265,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":265,"kind":"lambda","params":[{"id":244,"name":"pattern"}],"qualifier":"def","expr":{"id":264,"kind":"app","opcode":"and","args":[{"id":254,"kind":"app","opcode":"eq","args":[{"id":252,"kind":"app","opcode":"size","args":[{"id":251,"kind":"app","opcode":"filter","args":[{"id":245,"kind":"name","name":"pattern"},{"id":250,"kind":"lambda","params":[{"id":246,"name":"coordinate"}],"qualifier":"def","expr":{"id":249,"kind":"app","opcode":"hasPlayer","args":[{"id":247,"kind":"name","name":"coordinate"},{"id":248,"kind":"name","name":"O"}]}}]}]},{"id":253,"kind":"int","value":2}]},{"id":263,"kind":"app","opcode":"eq","args":[{"id":261,"kind":"app","opcode":"size","args":[{"id":260,"kind":"app","opcode":"filter","args":[{"id":255,"kind":"name","name":"pattern"},{"id":259,"kind":"lambda","params":[{"id":256,"name":"coordinate"}],"qualifier":"def","expr":{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]}}]}]},{"id":262,"kind":"int","value":1}]}]}}},{"id":287,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":287,"kind":"lambda","params":[{"id":266,"name":"pattern"}],"qualifier":"def","expr":{"id":286,"kind":"app","opcode":"and","args":[{"id":276,"kind":"app","opcode":"eq","args":[{"id":274,"kind":"app","opcode":"size","args":[{"id":273,"kind":"app","opcode":"filter","args":[{"id":267,"kind":"name","name":"pattern"},{"id":272,"kind":"lambda","params":[{"id":268,"name":"coordinate"}],"qualifier":"def","expr":{"id":271,"kind":"app","opcode":"hasPlayer","args":[{"id":269,"kind":"name","name":"coordinate"},{"id":270,"kind":"name","name":"X"}]}}]}]},{"id":275,"kind":"int","value":1}]},{"id":285,"kind":"app","opcode":"eq","args":[{"id":283,"kind":"app","opcode":"size","args":[{"id":282,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"pattern"},{"id":281,"kind":"lambda","params":[{"id":278,"name":"coordinate"}],"qualifier":"def","expr":{"id":280,"kind":"app","opcode":"isEmpty","args":[{"id":279,"kind":"name","name":"coordinate"}]}}]}]},{"id":284,"kind":"int","value":2}]}]}}},{"id":300,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":299,"kind":"app","opcode":"isEmpty","args":[{"id":298,"kind":"app","opcode":"Tup","args":[{"id":296,"kind":"int","value":2},{"id":297,"kind":"int","value":2}]}]}},{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}}},{"id":213,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":212,"kind":"app","opcode":"and","args":[{"id":208,"kind":"app","opcode":"and","args":[{"id":204,"kind":"name","name":"boardFull"},{"id":207,"kind":"app","opcode":"not","args":[{"id":206,"kind":"app","opcode":"won","args":[{"id":205,"kind":"name","name":"X"}]}]}]},{"id":211,"kind":"app","opcode":"not","args":[{"id":210,"kind":"app","opcode":"won","args":[{"id":209,"kind":"name","name":"O"}]}]}]}},{"id":221,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":220,"kind":"app","opcode":"or","args":[{"id":218,"kind":"app","opcode":"or","args":[{"id":215,"kind":"app","opcode":"won","args":[{"id":214,"kind":"name","name":"X"}]},{"id":217,"kind":"app","opcode":"won","args":[{"id":216,"kind":"name","name":"O"}]}]},{"id":219,"kind":"name","name":"boardFull"}]}},{"id":291,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":290,"kind":"app","opcode":"exists","args":[{"id":288,"kind":"name","name":"winningPatterns"},{"id":289,"kind":"name","name":"canWinWithPattern"}]}},{"id":295,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":294,"kind":"app","opcode":"exists","args":[{"id":292,"kind":"name","name":"winningPatterns"},{"id":293,"kind":"name","name":"canBlockWithPattern"}]}},{"id":304,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":303,"kind":"app","opcode":"exists","args":[{"id":301,"kind":"name","name":"winningPatterns"},{"id":302,"kind":"name","name":"canSetupWinWithPattern"}]}},{"id":368,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":367,"kind":"app","opcode":"Move","args":[{"id":363,"kind":"name","name":"X"},{"id":366,"kind":"app","opcode":"Tup","args":[{"id":364,"kind":"int","value":2},{"id":365,"kind":"int","value":2}]}]}},{"id":396,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":396,"kind":"lambda","params":[{"id":386,"name":"player"}],"qualifier":"action","expr":{"id":395,"kind":"let","opdef":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":394,"kind":"app","opcode":"Move","args":[{"id":392,"kind":"name","name":"player"},{"id":393,"kind":"name","name":"coordinate"}]}}}},{"id":404,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":403,"kind":"let","opdef":{"id":399,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":398,"kind":"app","opcode":"oneOf","args":[{"id":397,"kind":"name","name":"corners"}]}},"expr":{"id":402,"kind":"app","opcode":"Move","args":[{"id":400,"kind":"name","name":"X"},{"id":401,"kind":"name","name":"corner"}]}}},{"doc":"X has not won. This does not hold, as X wins most of the times.","id":481,"kind":"def","name":"XHasNotWon","qualifier":"val","expr":{"id":480,"kind":"app","opcode":"not","args":[{"id":479,"kind":"app","opcode":"won","args":[{"id":478,"kind":"name","name":"X"}]}]}},{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":485,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":484,"kind":"app","opcode":"not","args":[{"id":483,"kind":"app","opcode":"won","args":[{"id":482,"kind":"name","name":"O"}]}]}},{"doc":"This is not always true, as if O picks the right moves, the game will\nresult in a stalemate.","id":494,"kind":"def","name":"XMustEventuallyWin","qualifier":"temporal","expr":{"id":493,"kind":"app","opcode":"eventually","args":[{"id":492,"kind":"app","opcode":"won","args":[{"id":491,"kind":"name","name":"X"}]}]}},{"id":445,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":444,"kind":"app","opcode":"actionAll","args":[{"id":435,"kind":"app","opcode":"eq","args":[{"id":433,"kind":"name","name":"nextTurn"},{"id":434,"kind":"name","name":"O"}]},{"id":438,"kind":"app","opcode":"not","args":[{"id":437,"kind":"app","opcode":"won","args":[{"id":436,"kind":"name","name":"X"}]}]},{"id":440,"kind":"app","opcode":"MoveToEmpty","args":[{"id":439,"kind":"name","name":"O"}]},{"id":443,"kind":"app","opcode":"assign","args":[{"id":442,"kind":"name","name":"nextTurn"},{"id":441,"kind":"name","name":"X"}]}]}},{"doc":"It's not a stalemate if one player has won or the board is not filled\nCheck with `quint run --invariant=NotStalemate tictactoe.qnt`","id":488,"kind":"def","name":"NotStalemate","qualifier":"val","expr":{"id":487,"kind":"app","opcode":"not","args":[{"id":486,"kind":"name","name":"stalemate"}]}},{"doc":"OHasNotWon is our default invariant for running the simulator/verifier\nas it is the only invariant that holds. Check `NotStalemate` for an\ninteresting counterexample.","id":490,"kind":"def","name":"inv","qualifier":"val","expr":{"id":489,"kind":"name","name":"OHasNotWon"}},{"id":344,"kind":"def","name":"Win","qualifier":"action","expr":{"id":343,"kind":"app","opcode":"actionAll","args":[{"id":327,"kind":"name","name":"canWin"},{"id":342,"kind":"let","opdef":{"id":332,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":331,"kind":"app","opcode":"oneOf","args":[{"id":330,"kind":"app","opcode":"filter","args":[{"id":328,"kind":"name","name":"winningPatterns"},{"id":329,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":341,"kind":"let","opdef":{"id":337,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":336,"kind":"app","opcode":"oneOf","args":[{"id":335,"kind":"app","opcode":"filter","args":[{"id":333,"kind":"name","name":"pattern"},{"id":334,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":340,"kind":"app","opcode":"Move","args":[{"id":338,"kind":"name","name":"X"},{"id":339,"kind":"name","name":"coordinate"}]}}}]}},{"id":362,"kind":"def","name":"Block","qualifier":"action","expr":{"id":361,"kind":"app","opcode":"actionAll","args":[{"id":345,"kind":"name","name":"canBlock"},{"id":360,"kind":"let","opdef":{"id":350,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":349,"kind":"app","opcode":"oneOf","args":[{"id":348,"kind":"app","opcode":"filter","args":[{"id":346,"kind":"name","name":"winningPatterns"},{"id":347,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":359,"kind":"let","opdef":{"id":355,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":354,"kind":"app","opcode":"oneOf","args":[{"id":353,"kind":"app","opcode":"filter","args":[{"id":351,"kind":"name","name":"pattern"},{"id":352,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":358,"kind":"app","opcode":"Move","args":[{"id":356,"kind":"name","name":"X"},{"id":357,"kind":"name","name":"coordinate"}]}}}]}},{"id":385,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":384,"kind":"app","opcode":"actionAll","args":[{"id":383,"kind":"let","opdef":{"id":373,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":372,"kind":"app","opcode":"oneOf","args":[{"id":371,"kind":"app","opcode":"filter","args":[{"id":369,"kind":"name","name":"winningPatterns"},{"id":370,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":382,"kind":"let","opdef":{"id":378,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":377,"kind":"app","opcode":"oneOf","args":[{"id":376,"kind":"app","opcode":"filter","args":[{"id":374,"kind":"name","name":"pattern"},{"id":375,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":381,"kind":"app","opcode":"Move","args":[{"id":379,"kind":"name","name":"X"},{"id":380,"kind":"name","name":"coordinate"}]}}}]}},{"id":432,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":431,"kind":"app","opcode":"actionAll","args":[{"id":407,"kind":"app","opcode":"eq","args":[{"id":405,"kind":"name","name":"nextTurn"},{"id":406,"kind":"name","name":"X"}]},{"id":410,"kind":"app","opcode":"not","args":[{"id":409,"kind":"app","opcode":"won","args":[{"id":408,"kind":"name","name":"O"}]}]},{"id":427,"kind":"app","opcode":"ite","args":[{"id":411,"kind":"name","name":"boardEmpty"},{"id":412,"kind":"name","name":"StartInCorner"},{"id":426,"kind":"app","opcode":"ite","args":[{"id":413,"kind":"name","name":"canWin"},{"id":414,"kind":"name","name":"Win"},{"id":425,"kind":"app","opcode":"ite","args":[{"id":415,"kind":"name","name":"canBlock"},{"id":416,"kind":"name","name":"Block"},{"id":424,"kind":"app","opcode":"ite","args":[{"id":417,"kind":"name","name":"canTakeCenter"},{"id":418,"kind":"name","name":"TakeCenter"},{"id":423,"kind":"app","opcode":"ite","args":[{"id":419,"kind":"name","name":"canSetupWin"},{"id":420,"kind":"name","name":"SetupWin"},{"id":422,"kind":"app","opcode":"MoveToEmpty","args":[{"id":421,"kind":"name","name":"X"}]}]}]}]}]}]},{"id":430,"kind":"app","opcode":"assign","args":[{"id":429,"kind":"name","name":"nextTurn"},{"id":428,"kind":"name","name":"O"}]}]}},{"doc":"Either X or O will make a move, depending on the value of `nextTurn`","id":477,"kind":"def","name":"step","qualifier":"action","expr":{"id":476,"kind":"app","opcode":"actionAny","args":[{"id":466,"kind":"name","name":"MoveX"},{"id":467,"kind":"name","name":"MoveO"},{"id":475,"kind":"app","opcode":"actionAll","args":[{"id":468,"kind":"name","name":"gameOver"},{"id":471,"kind":"app","opcode":"assign","args":[{"id":470,"kind":"name","name":"board"},{"id":469,"kind":"name","name":"board"}]},{"id":474,"kind":"app","opcode":"assign","args":[{"id":473,"kind":"name","name":"nextTurn"},{"id":472,"kind":"name","name":"nextTurn"}]}]}]}}]}],"table":{"3":{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"12":{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"14":{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"17":{"id":16,"name":"__OccupiedParam","kind":"param"},"27":{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"31":{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"141":{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"142":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"143":{"id":137,"name":"coordinate","kind":"param"},"147":{"id":137,"name":"coordinate","kind":"param"},"155":{"id":153,"name":"coordinate","kind":"param"},"156":{"id":152,"kind":"def","name":"square","qualifier":"def","expr":{"id":152,"kind":"lambda","params":[{"id":137,"name":"coordinate"}],"qualifier":"def","expr":{"id":150,"kind":"app","opcode":"get","args":[{"id":146,"kind":"app","opcode":"get","args":[{"id":142,"kind":"name","name":"board"},{"id":145,"kind":"app","opcode":"item","args":[{"id":143,"kind":"name","name":"coordinate"},{"id":144,"kind":"int","value":1}]}]},{"id":149,"kind":"app","opcode":"item","args":[{"id":147,"kind":"name","name":"coordinate"},{"id":148,"kind":"int","value":2}]}]}},"depth":0},"158":{"id":154,"name":"player","kind":"param"},"159":{"name":"p","id":167,"kind":"param"},"170":{"id":169,"name":"coordinate","kind":"param"},"171":{"id":152,"kind":"def","name":"square","qualifier":"def","expr":{"id":152,"kind":"lambda","params":[{"id":137,"name":"coordinate"}],"qualifier":"def","expr":{"id":150,"kind":"app","opcode":"get","args":[{"id":146,"kind":"app","opcode":"get","args":[{"id":142,"kind":"name","name":"board"},{"id":145,"kind":"app","opcode":"item","args":[{"id":143,"kind":"name","name":"coordinate"},{"id":144,"kind":"int","value":1}]}]},{"id":149,"kind":"app","opcode":"item","args":[{"id":147,"kind":"name","name":"coordinate"},{"id":148,"kind":"int","value":2}]}]}},"depth":0},"182":{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]},"depth":0},"183":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"187":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"189":{"id":188,"name":"pattern","kind":"param"},"191":{"id":190,"name":"coordinate","kind":"param"},"192":{"id":186,"name":"player","kind":"param"},"193":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"199":{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]},"depth":0},"200":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"204":{"id":203,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":202,"kind":"app","opcode":"not","args":[{"id":201,"kind":"app","opcode":"exists","args":[{"id":199,"kind":"name","name":"boardCoordinates"},{"id":200,"kind":"name","name":"isEmpty"}]}]},"depth":0},"205":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"206":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"209":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"210":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"214":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"215":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"216":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"217":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"219":{"id":203,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":202,"kind":"app","opcode":"not","args":[{"id":201,"kind":"app","opcode":"exists","args":[{"id":199,"kind":"name","name":"boardCoordinates"},{"id":200,"kind":"name","name":"isEmpty"}]}]},"depth":0},"223":{"id":222,"name":"pattern","kind":"param"},"225":{"id":224,"name":"coordinate","kind":"param"},"226":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"227":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"233":{"id":222,"name":"pattern","kind":"param"},"235":{"id":234,"name":"coordinate","kind":"param"},"236":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"245":{"id":244,"name":"pattern","kind":"param"},"247":{"id":246,"name":"coordinate","kind":"param"},"248":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"249":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"255":{"id":244,"name":"pattern","kind":"param"},"257":{"id":256,"name":"coordinate","kind":"param"},"258":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"267":{"id":266,"name":"pattern","kind":"param"},"269":{"id":268,"name":"coordinate","kind":"param"},"270":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"271":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"277":{"id":266,"name":"pattern","kind":"param"},"279":{"id":278,"name":"coordinate","kind":"param"},"280":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"288":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"289":{"id":243,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":243,"kind":"lambda","params":[{"id":222,"name":"pattern"}],"qualifier":"def","expr":{"id":242,"kind":"app","opcode":"and","args":[{"id":232,"kind":"app","opcode":"eq","args":[{"id":230,"kind":"app","opcode":"size","args":[{"id":229,"kind":"app","opcode":"filter","args":[{"id":223,"kind":"name","name":"pattern"},{"id":228,"kind":"lambda","params":[{"id":224,"name":"coordinate"}],"qualifier":"def","expr":{"id":227,"kind":"app","opcode":"hasPlayer","args":[{"id":225,"kind":"name","name":"coordinate"},{"id":226,"kind":"name","name":"X"}]}}]}]},{"id":231,"kind":"int","value":2}]},{"id":241,"kind":"app","opcode":"eq","args":[{"id":239,"kind":"app","opcode":"size","args":[{"id":238,"kind":"app","opcode":"filter","args":[{"id":233,"kind":"name","name":"pattern"},{"id":237,"kind":"lambda","params":[{"id":234,"name":"coordinate"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"isEmpty","args":[{"id":235,"kind":"name","name":"coordinate"}]}}]}]},{"id":240,"kind":"int","value":1}]}]}},"depth":0},"292":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"293":{"id":265,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":265,"kind":"lambda","params":[{"id":244,"name":"pattern"}],"qualifier":"def","expr":{"id":264,"kind":"app","opcode":"and","args":[{"id":254,"kind":"app","opcode":"eq","args":[{"id":252,"kind":"app","opcode":"size","args":[{"id":251,"kind":"app","opcode":"filter","args":[{"id":245,"kind":"name","name":"pattern"},{"id":250,"kind":"lambda","params":[{"id":246,"name":"coordinate"}],"qualifier":"def","expr":{"id":249,"kind":"app","opcode":"hasPlayer","args":[{"id":247,"kind":"name","name":"coordinate"},{"id":248,"kind":"name","name":"O"}]}}]}]},{"id":253,"kind":"int","value":2}]},{"id":263,"kind":"app","opcode":"eq","args":[{"id":261,"kind":"app","opcode":"size","args":[{"id":260,"kind":"app","opcode":"filter","args":[{"id":255,"kind":"name","name":"pattern"},{"id":259,"kind":"lambda","params":[{"id":256,"name":"coordinate"}],"qualifier":"def","expr":{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]}}]}]},{"id":262,"kind":"int","value":1}]}]}},"depth":0},"299":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"301":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"302":{"id":287,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":287,"kind":"lambda","params":[{"id":266,"name":"pattern"}],"qualifier":"def","expr":{"id":286,"kind":"app","opcode":"and","args":[{"id":276,"kind":"app","opcode":"eq","args":[{"id":274,"kind":"app","opcode":"size","args":[{"id":273,"kind":"app","opcode":"filter","args":[{"id":267,"kind":"name","name":"pattern"},{"id":272,"kind":"lambda","params":[{"id":268,"name":"coordinate"}],"qualifier":"def","expr":{"id":271,"kind":"app","opcode":"hasPlayer","args":[{"id":269,"kind":"name","name":"coordinate"},{"id":270,"kind":"name","name":"X"}]}}]}]},{"id":275,"kind":"int","value":1}]},{"id":285,"kind":"app","opcode":"eq","args":[{"id":283,"kind":"app","opcode":"size","args":[{"id":282,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"pattern"},{"id":281,"kind":"lambda","params":[{"id":278,"name":"coordinate"}],"qualifier":"def","expr":{"id":280,"kind":"app","opcode":"isEmpty","args":[{"id":279,"kind":"name","name":"coordinate"}]}}]}]},{"id":284,"kind":"int","value":2}]}]}},"depth":0},"307":{"id":306,"name":"coordinate","kind":"param"},"308":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"309":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"310":{"id":306,"name":"coordinate","kind":"param"},"314":{"id":313,"name":"row","kind":"param"},"315":{"id":306,"name":"coordinate","kind":"param"},"318":{"id":305,"name":"player","kind":"param"},"319":{"id":20,"kind":"def","name":"Occupied","qualifier":"def","expr":{"id":19,"kind":"lambda","params":[{"id":16,"name":"__OccupiedParam"}],"qualifier":"def","expr":{"id":18,"kind":"app","opcode":"variant","args":[{"id":15,"kind":"str","value":"Occupied"},{"kind":"name","name":"__OccupiedParam","id":17}]}},"depth":0},"323":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"327":{"id":291,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":290,"kind":"app","opcode":"exists","args":[{"id":288,"kind":"name","name":"winningPatterns"},{"id":289,"kind":"name","name":"canWinWithPattern"}]},"depth":0},"328":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"329":{"id":243,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":243,"kind":"lambda","params":[{"id":222,"name":"pattern"}],"qualifier":"def","expr":{"id":242,"kind":"app","opcode":"and","args":[{"id":232,"kind":"app","opcode":"eq","args":[{"id":230,"kind":"app","opcode":"size","args":[{"id":229,"kind":"app","opcode":"filter","args":[{"id":223,"kind":"name","name":"pattern"},{"id":228,"kind":"lambda","params":[{"id":224,"name":"coordinate"}],"qualifier":"def","expr":{"id":227,"kind":"app","opcode":"hasPlayer","args":[{"id":225,"kind":"name","name":"coordinate"},{"id":226,"kind":"name","name":"X"}]}}]}]},{"id":231,"kind":"int","value":2}]},{"id":241,"kind":"app","opcode":"eq","args":[{"id":239,"kind":"app","opcode":"size","args":[{"id":238,"kind":"app","opcode":"filter","args":[{"id":233,"kind":"name","name":"pattern"},{"id":237,"kind":"lambda","params":[{"id":234,"name":"coordinate"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"isEmpty","args":[{"id":235,"kind":"name","name":"coordinate"}]}}]}]},{"id":240,"kind":"int","value":1}]}]}},"depth":0},"333":{"id":332,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":331,"kind":"app","opcode":"oneOf","args":[{"id":330,"kind":"app","opcode":"filter","args":[{"id":328,"kind":"name","name":"winningPatterns"},{"id":329,"kind":"name","name":"canWinWithPattern"}]}]},"depth":1},"334":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"338":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"339":{"id":337,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":336,"kind":"app","opcode":"oneOf","args":[{"id":335,"kind":"app","opcode":"filter","args":[{"id":333,"kind":"name","name":"pattern"},{"id":334,"kind":"name","name":"isEmpty"}]}]},"depth":1},"340":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"345":{"id":295,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":294,"kind":"app","opcode":"exists","args":[{"id":292,"kind":"name","name":"winningPatterns"},{"id":293,"kind":"name","name":"canBlockWithPattern"}]},"depth":0},"346":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"347":{"id":265,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":265,"kind":"lambda","params":[{"id":244,"name":"pattern"}],"qualifier":"def","expr":{"id":264,"kind":"app","opcode":"and","args":[{"id":254,"kind":"app","opcode":"eq","args":[{"id":252,"kind":"app","opcode":"size","args":[{"id":251,"kind":"app","opcode":"filter","args":[{"id":245,"kind":"name","name":"pattern"},{"id":250,"kind":"lambda","params":[{"id":246,"name":"coordinate"}],"qualifier":"def","expr":{"id":249,"kind":"app","opcode":"hasPlayer","args":[{"id":247,"kind":"name","name":"coordinate"},{"id":248,"kind":"name","name":"O"}]}}]}]},{"id":253,"kind":"int","value":2}]},{"id":263,"kind":"app","opcode":"eq","args":[{"id":261,"kind":"app","opcode":"size","args":[{"id":260,"kind":"app","opcode":"filter","args":[{"id":255,"kind":"name","name":"pattern"},{"id":259,"kind":"lambda","params":[{"id":256,"name":"coordinate"}],"qualifier":"def","expr":{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]}}]}]},{"id":262,"kind":"int","value":1}]}]}},"depth":0},"351":{"id":350,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":349,"kind":"app","opcode":"oneOf","args":[{"id":348,"kind":"app","opcode":"filter","args":[{"id":346,"kind":"name","name":"winningPatterns"},{"id":347,"kind":"name","name":"canBlockWithPattern"}]}]},"depth":1},"352":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"356":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"357":{"id":355,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":354,"kind":"app","opcode":"oneOf","args":[{"id":353,"kind":"app","opcode":"filter","args":[{"id":351,"kind":"name","name":"pattern"},{"id":352,"kind":"name","name":"isEmpty"}]}]},"depth":1},"358":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"363":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"367":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"369":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"370":{"id":287,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":287,"kind":"lambda","params":[{"id":266,"name":"pattern"}],"qualifier":"def","expr":{"id":286,"kind":"app","opcode":"and","args":[{"id":276,"kind":"app","opcode":"eq","args":[{"id":274,"kind":"app","opcode":"size","args":[{"id":273,"kind":"app","opcode":"filter","args":[{"id":267,"kind":"name","name":"pattern"},{"id":272,"kind":"lambda","params":[{"id":268,"name":"coordinate"}],"qualifier":"def","expr":{"id":271,"kind":"app","opcode":"hasPlayer","args":[{"id":269,"kind":"name","name":"coordinate"},{"id":270,"kind":"name","name":"X"}]}}]}]},{"id":275,"kind":"int","value":1}]},{"id":285,"kind":"app","opcode":"eq","args":[{"id":283,"kind":"app","opcode":"size","args":[{"id":282,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"pattern"},{"id":281,"kind":"lambda","params":[{"id":278,"name":"coordinate"}],"qualifier":"def","expr":{"id":280,"kind":"app","opcode":"isEmpty","args":[{"id":279,"kind":"name","name":"coordinate"}]}}]}]},{"id":284,"kind":"int","value":2}]}]}},"depth":0},"374":{"id":373,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":372,"kind":"app","opcode":"oneOf","args":[{"id":371,"kind":"app","opcode":"filter","args":[{"id":369,"kind":"name","name":"winningPatterns"},{"id":370,"kind":"name","name":"canSetupWinWithPattern"}]}]},"depth":1},"375":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"379":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"380":{"id":378,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":377,"kind":"app","opcode":"oneOf","args":[{"id":376,"kind":"app","opcode":"filter","args":[{"id":374,"kind":"name","name":"pattern"},{"id":375,"kind":"name","name":"isEmpty"}]}]},"depth":1},"381":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"387":{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]},"depth":0},"388":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"392":{"id":386,"name":"player","kind":"param"},"393":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]},"depth":1},"394":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"397":{"id":136,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":135,"kind":"app","opcode":"Set","args":[{"id":125,"kind":"app","opcode":"Tup","args":[{"id":123,"kind":"int","value":1},{"id":124,"kind":"int","value":1}]},{"id":128,"kind":"app","opcode":"Tup","args":[{"id":126,"kind":"int","value":3},{"id":127,"kind":"int","value":1}]},{"id":131,"kind":"app","opcode":"Tup","args":[{"id":129,"kind":"int","value":1},{"id":130,"kind":"int","value":3}]},{"id":134,"kind":"app","opcode":"Tup","args":[{"id":132,"kind":"int","value":3},{"id":133,"kind":"int","value":3}]}]},"depth":0},"400":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"401":{"id":399,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":398,"kind":"app","opcode":"oneOf","args":[{"id":397,"kind":"name","name":"corners"}]},"depth":1},"402":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"405":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"406":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"408":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"409":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"411":{"id":185,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":184,"kind":"app","opcode":"forall","args":[{"id":182,"kind":"name","name":"boardCoordinates"},{"id":183,"kind":"name","name":"isEmpty"}]},"depth":0},"412":{"id":404,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":403,"kind":"let","opdef":{"id":399,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":398,"kind":"app","opcode":"oneOf","args":[{"id":397,"kind":"name","name":"corners"}]}},"expr":{"id":402,"kind":"app","opcode":"Move","args":[{"id":400,"kind":"name","name":"X"},{"id":401,"kind":"name","name":"corner"}]}},"depth":0},"413":{"id":291,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":290,"kind":"app","opcode":"exists","args":[{"id":288,"kind":"name","name":"winningPatterns"},{"id":289,"kind":"name","name":"canWinWithPattern"}]},"depth":0},"414":{"id":344,"kind":"def","name":"Win","qualifier":"action","expr":{"id":343,"kind":"app","opcode":"actionAll","args":[{"id":327,"kind":"name","name":"canWin"},{"id":342,"kind":"let","opdef":{"id":332,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":331,"kind":"app","opcode":"oneOf","args":[{"id":330,"kind":"app","opcode":"filter","args":[{"id":328,"kind":"name","name":"winningPatterns"},{"id":329,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":341,"kind":"let","opdef":{"id":337,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":336,"kind":"app","opcode":"oneOf","args":[{"id":335,"kind":"app","opcode":"filter","args":[{"id":333,"kind":"name","name":"pattern"},{"id":334,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":340,"kind":"app","opcode":"Move","args":[{"id":338,"kind":"name","name":"X"},{"id":339,"kind":"name","name":"coordinate"}]}}}]},"depth":0},"415":{"id":295,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":294,"kind":"app","opcode":"exists","args":[{"id":292,"kind":"name","name":"winningPatterns"},{"id":293,"kind":"name","name":"canBlockWithPattern"}]},"depth":0},"416":{"id":362,"kind":"def","name":"Block","qualifier":"action","expr":{"id":361,"kind":"app","opcode":"actionAll","args":[{"id":345,"kind":"name","name":"canBlock"},{"id":360,"kind":"let","opdef":{"id":350,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":349,"kind":"app","opcode":"oneOf","args":[{"id":348,"kind":"app","opcode":"filter","args":[{"id":346,"kind":"name","name":"winningPatterns"},{"id":347,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":359,"kind":"let","opdef":{"id":355,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":354,"kind":"app","opcode":"oneOf","args":[{"id":353,"kind":"app","opcode":"filter","args":[{"id":351,"kind":"name","name":"pattern"},{"id":352,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":358,"kind":"app","opcode":"Move","args":[{"id":356,"kind":"name","name":"X"},{"id":357,"kind":"name","name":"coordinate"}]}}}]},"depth":0},"417":{"id":300,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":299,"kind":"app","opcode":"isEmpty","args":[{"id":298,"kind":"app","opcode":"Tup","args":[{"id":296,"kind":"int","value":2},{"id":297,"kind":"int","value":2}]}]},"depth":0},"418":{"id":368,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":367,"kind":"app","opcode":"Move","args":[{"id":363,"kind":"name","name":"X"},{"id":366,"kind":"app","opcode":"Tup","args":[{"id":364,"kind":"int","value":2},{"id":365,"kind":"int","value":2}]}]},"depth":0},"419":{"id":304,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":303,"kind":"app","opcode":"exists","args":[{"id":301,"kind":"name","name":"winningPatterns"},{"id":302,"kind":"name","name":"canSetupWinWithPattern"}]},"depth":0},"420":{"id":385,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":384,"kind":"app","opcode":"actionAll","args":[{"id":383,"kind":"let","opdef":{"id":373,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":372,"kind":"app","opcode":"oneOf","args":[{"id":371,"kind":"app","opcode":"filter","args":[{"id":369,"kind":"name","name":"winningPatterns"},{"id":370,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":382,"kind":"let","opdef":{"id":378,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":377,"kind":"app","opcode":"oneOf","args":[{"id":376,"kind":"app","opcode":"filter","args":[{"id":374,"kind":"name","name":"pattern"},{"id":375,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":381,"kind":"app","opcode":"Move","args":[{"id":379,"kind":"name","name":"X"},{"id":380,"kind":"name","name":"coordinate"}]}}}]},"depth":0},"421":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"422":{"id":396,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":396,"kind":"lambda","params":[{"id":386,"name":"player"}],"qualifier":"action","expr":{"id":395,"kind":"let","opdef":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":394,"kind":"app","opcode":"Move","args":[{"id":392,"kind":"name","name":"player"},{"id":393,"kind":"name","name":"coordinate"}]}}},"depth":0},"428":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"429":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"433":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"434":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"436":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"437":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"439":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"440":{"id":396,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":396,"kind":"lambda","params":[{"id":386,"name":"player"}],"qualifier":"action","expr":{"id":395,"kind":"let","opdef":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":394,"kind":"app","opcode":"Move","args":[{"id":392,"kind":"name","name":"player"},{"id":393,"kind":"name","name":"coordinate"}]}}},"depth":0},"441":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"442":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"446":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"447":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"457":{"id":24,"kind":"def","name":"Empty","qualifier":"val","expr":{"id":23,"kind":"app","opcode":"variant","args":[{"id":21,"kind":"str","value":"Empty"},{"id":22,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"462":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"466":{"id":432,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":431,"kind":"app","opcode":"actionAll","args":[{"id":407,"kind":"app","opcode":"eq","args":[{"id":405,"kind":"name","name":"nextTurn"},{"id":406,"kind":"name","name":"X"}]},{"id":410,"kind":"app","opcode":"not","args":[{"id":409,"kind":"app","opcode":"won","args":[{"id":408,"kind":"name","name":"O"}]}]},{"id":427,"kind":"app","opcode":"ite","args":[{"id":411,"kind":"name","name":"boardEmpty"},{"id":412,"kind":"name","name":"StartInCorner"},{"id":426,"kind":"app","opcode":"ite","args":[{"id":413,"kind":"name","name":"canWin"},{"id":414,"kind":"name","name":"Win"},{"id":425,"kind":"app","opcode":"ite","args":[{"id":415,"kind":"name","name":"canBlock"},{"id":416,"kind":"name","name":"Block"},{"id":424,"kind":"app","opcode":"ite","args":[{"id":417,"kind":"name","name":"canTakeCenter"},{"id":418,"kind":"name","name":"TakeCenter"},{"id":423,"kind":"app","opcode":"ite","args":[{"id":419,"kind":"name","name":"canSetupWin"},{"id":420,"kind":"name","name":"SetupWin"},{"id":422,"kind":"app","opcode":"MoveToEmpty","args":[{"id":421,"kind":"name","name":"X"}]}]}]}]}]}]},{"id":430,"kind":"app","opcode":"assign","args":[{"id":429,"kind":"name","name":"nextTurn"},{"id":428,"kind":"name","name":"O"}]}]},"depth":0},"467":{"id":445,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":444,"kind":"app","opcode":"actionAll","args":[{"id":435,"kind":"app","opcode":"eq","args":[{"id":433,"kind":"name","name":"nextTurn"},{"id":434,"kind":"name","name":"O"}]},{"id":438,"kind":"app","opcode":"not","args":[{"id":437,"kind":"app","opcode":"won","args":[{"id":436,"kind":"name","name":"X"}]}]},{"id":440,"kind":"app","opcode":"MoveToEmpty","args":[{"id":439,"kind":"name","name":"O"}]},{"id":443,"kind":"app","opcode":"assign","args":[{"id":442,"kind":"name","name":"nextTurn"},{"id":441,"kind":"name","name":"X"}]}]},"depth":0},"468":{"id":221,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":220,"kind":"app","opcode":"or","args":[{"id":218,"kind":"app","opcode":"or","args":[{"id":215,"kind":"app","opcode":"won","args":[{"id":214,"kind":"name","name":"X"}]},{"id":217,"kind":"app","opcode":"won","args":[{"id":216,"kind":"name","name":"O"}]}]},{"id":219,"kind":"name","name":"boardFull"}]},"depth":0},"469":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"470":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"472":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"473":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"478":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"479":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"482":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"483":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"486":{"id":213,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":212,"kind":"app","opcode":"and","args":[{"id":208,"kind":"app","opcode":"and","args":[{"id":204,"kind":"name","name":"boardFull"},{"id":207,"kind":"app","opcode":"not","args":[{"id":206,"kind":"app","opcode":"won","args":[{"id":205,"kind":"name","name":"X"}]}]}]},{"id":211,"kind":"app","opcode":"not","args":[{"id":210,"kind":"app","opcode":"won","args":[{"id":209,"kind":"name","name":"O"}]}]}]},"depth":0},"489":{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":485,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":484,"kind":"app","opcode":"not","args":[{"id":483,"kind":"app","opcode":"won","args":[{"id":482,"kind":"name","name":"O"}]}]},"depth":0},"491":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"492":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0}},"types":{"4":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"5":{"typeVariables":{},"rowVariables":{},"type":{"kind":"rec","fields":{"kind":"empty"}}},"6":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"7":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"8":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"9":{"typeVariables":{},"rowVariables":{},"type":{"kind":"rec","fields":{"kind":"empty"}}},"10":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"11":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"15":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"16":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"17":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"18":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"19":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}}},"20":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}}},"21":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"22":{"typeVariables":{},"rowVariables":{},"type":{"kind":"rec","fields":{"kind":"empty"}}},"23":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}},"24":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}},"30":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"32":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"33":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"34":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"35":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"36":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"37":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"38":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"39":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"40":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"41":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"42":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"43":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"44":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"45":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"46":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"47":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"48":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"49":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"50":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"51":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"52":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"53":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"54":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"55":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"56":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"57":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"58":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"59":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"60":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"61":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"62":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"63":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"64":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"65":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"66":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"67":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"68":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"69":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"70":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"71":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"72":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"73":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"74":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"75":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"76":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"77":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"78":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"79":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"80":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"81":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"82":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"83":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"84":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"85":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"86":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"87":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"88":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"89":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"90":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"91":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"92":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"93":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"94":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"95":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"96":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"97":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"98":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"99":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"100":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"101":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"102":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"103":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"104":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"105":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"106":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"107":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"108":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"109":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"110":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"111":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"112":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"113":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"114":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"115":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"116":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"117":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"118":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"119":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"120":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"121":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"122":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"123":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"124":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"125":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"126":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"127":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"128":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"129":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"130":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"131":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"132":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"133":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"134":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"135":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"136":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"137":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"142":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"143":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"144":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"145":{"typeVariables":{},"rowVariables":{},"type":{"id":25,"kind":"int"}},"146":{"typeVariables":{},"rowVariables":{},"type":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"147":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"148":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"149":{"typeVariables":{},"rowVariables":{},"type":{"id":26,"kind":"int"}},"150":{"typeVariables":{},"rowVariables":{},"type":{"id":27,"kind":"const","name":"Square"}},"152":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"id":27,"kind":"const","name":"Square"}}},"153":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"154":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"155":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"156":{"typeVariables":{},"rowVariables":{},"type":{"id":27,"kind":"const","name":"Square"}},"157":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"158":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"159":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"160":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"161":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"162":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"163":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":13,"kind":"rec","fields":{"kind":"empty"}}],"res":{"kind":"bool"}}},"164":{"typeVariables":{},"rowVariables":{},"type":{"id":13,"kind":"rec","fields":{"kind":"empty"}}},"165":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"166":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":3,"kind":"bool"}}},"167":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"168":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"bool"}}},"169":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"170":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"171":{"typeVariables":{},"rowVariables":{},"type":{"id":27,"kind":"const","name":"Square"}},"172":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"173":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"174":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"175":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"176":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":13,"kind":"rec","fields":{"kind":"empty"}}],"res":{"kind":"bool"}}},"177":{"typeVariables":{},"rowVariables":{},"type":{"id":13,"kind":"rec","fields":{"kind":"empty"}}},"178":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"179":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"bool"}}},"180":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"181":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"182":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"183":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"184":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"185":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"186":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"187":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"188":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"189":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"190":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"191":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"192":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"193":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"194":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"195":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"196":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":6,"kind":"bool"}}},"197":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"198":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":6,"kind":"bool"}}},"199":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"200":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"201":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"202":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"203":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"204":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"205":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"206":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"207":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"208":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"209":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"210":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"211":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"212":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"213":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"214":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"215":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"216":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"217":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"218":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"219":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"220":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"221":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"222":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"223":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"224":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"225":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"226":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"227":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"228":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"229":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"230":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"231":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"232":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"233":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"234":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"235":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"236":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"237":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"238":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"239":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"240":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"241":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"242":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"243":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"244":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"245":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"246":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"247":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"248":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"249":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"250":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"251":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"252":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"253":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"254":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"255":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"256":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"257":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"258":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"259":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"260":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"261":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"262":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"263":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"264":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"265":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"266":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"267":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"268":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"269":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"270":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"271":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"272":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"273":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"274":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"275":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"276":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"277":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"278":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"279":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"280":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"281":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"282":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"283":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"284":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"285":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"286":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"287":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"288":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"289":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"290":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"291":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"292":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"293":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"294":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"295":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"296":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"297":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"298":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"299":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"300":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"301":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"302":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"303":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"304":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"305":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"306":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"307":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"308":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"309":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"310":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"311":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"312":{"typeVariables":{},"rowVariables":{},"type":{"id":25,"kind":"int"}},"313":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":3}},"314":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":3}},"315":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"316":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"317":{"typeVariables":{},"rowVariables":{},"type":{"id":26,"kind":"int"}},"318":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"319":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"320":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":8}},"321":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":3}],"res":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":8}}},"322":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}},"id":10}},"323":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"324":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"325":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"326":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"},{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"id":3,"kind":"bool"}}},"327":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"328":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"329":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"330":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"331":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"332":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"333":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"334":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"335":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"336":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"337":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"338":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"339":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"340":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"341":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"342":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"343":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"344":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"345":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"346":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"347":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"348":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"349":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"350":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"351":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"352":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"353":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"354":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"355":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"356":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"357":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"358":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"359":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"360":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"361":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"362":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"363":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"364":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"365":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"366":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"367":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"368":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"369":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"370":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"371":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"372":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"373":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"374":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"375":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"376":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"377":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"378":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"379":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"380":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"381":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"382":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"383":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"384":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"385":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"386":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"387":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"388":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"389":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":7}},"390":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"391":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"392":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"393":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"394":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"395":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"396":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":3,"kind":"bool"}}},"397":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"398":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"399":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"400":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"401":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"402":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"403":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"404":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"405":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"406":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"407":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"408":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"409":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"410":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"411":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"412":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"413":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"414":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"415":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"416":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"417":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"418":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"419":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"420":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"421":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"422":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"423":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"424":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"425":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"426":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"427":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"428":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"429":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"430":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"431":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"432":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"433":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"434":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"435":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"436":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"437":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"438":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"439":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"440":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"441":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"442":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"443":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"444":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"445":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"446":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"447":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"448":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"449":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"450":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"451":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"452":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"453":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"454":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"455":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"456":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"457":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}},"458":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}}},"459":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}},"id":8}},"460":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}},"id":8}}},"461":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}},"id":8},"id":8}},"462":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"463":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"464":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"465":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"466":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"467":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"468":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"469":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"470":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"471":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"472":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"473":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"474":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"475":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"476":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"477":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"478":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"479":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"480":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"481":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"482":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"483":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"484":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"485":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"486":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"487":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"488":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"489":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"490":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"491":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"492":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"493":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"494":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}}},"effects":{"4":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"5":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"6":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"7":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"8":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"9":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"10":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"11":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"15":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"16":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]},"effectVariables":{},"entityVariables":{}},"17":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]},"effectVariables":{},"entityVariables":{}},"18":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]},"effectVariables":{},"entityVariables":{}},"19":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}},"effectVariables":{},"entityVariables":{}},"20":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}}},"21":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"22":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"23":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"24":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"30":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"32":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"33":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"34":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"35":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"36":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"37":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"38":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"39":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"40":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"41":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"42":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"43":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"44":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"45":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"46":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"47":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"48":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"49":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"50":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"51":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"52":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"53":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"54":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"55":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"56":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"57":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"58":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"59":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"60":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"61":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"62":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"63":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"64":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"65":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"66":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"67":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"68":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"69":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"70":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"71":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"72":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"73":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"74":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"75":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"76":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"77":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"78":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"79":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"80":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"81":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"82":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"83":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"84":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"85":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"86":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"87":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"88":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"89":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"90":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"91":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"92":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"93":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"94":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"95":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"96":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"97":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"98":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"99":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"100":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"101":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"102":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"103":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"104":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"105":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"106":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"107":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"108":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"109":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"110":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"111":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"112":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"113":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"114":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"115":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"116":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"117":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"118":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"119":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"120":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"121":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"122":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"123":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"124":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"125":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"126":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"127":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"128":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"129":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"130":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"131":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"132":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"133":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"134":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"135":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"136":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"137":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"142":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"143":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"144":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"145":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"146":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v204"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"147":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"148":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"149":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"150":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v204"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"152":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v204"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"153":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v238"}}]},"effectVariables":{},"entityVariables":{}},"154":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v239"}}]},"effectVariables":{},"entityVariables":{}},"155":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v238"}}]},"effectVariables":{},"entityVariables":{}},"156":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"157":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"158":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v239"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v240"}}]},"effectVariables":{},"entityVariables":{}},"159":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v241"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v242"}}]},"effectVariables":{},"entityVariables":{}},"160":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v241"}]}},{"kind":"temporal","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v240"},{"kind":"variable","name":"_v242"}]}}]},"effectVariables":{},"entityVariables":{}},"161":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"162":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"163":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"164":{"effect":{"kind":"variable","name":"_e62"},"effectVariables":{},"entityVariables":{}},"165":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"166":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"167":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v241"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v242"}}]},"effectVariables":{},"entityVariables":{}},"168":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v238"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v239"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"169":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v247"}}]},"effectVariables":{},"entityVariables":{}},"170":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v247"}}]},"effectVariables":{},"entityVariables":{}},"171":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v247"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"172":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"173":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"174":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"175":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"176":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v247"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"177":{"effect":{"kind":"variable","name":"_e67"},"effectVariables":{},"entityVariables":{}},"178":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"179":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v247"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"180":{"effect":{"kind":"variable","name":"_e68"},"effectVariables":{},"entityVariables":{}},"181":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v247"}}]}],"result":{"kind":"concrete","components":[]}}},"182":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"183":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"184":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"185":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"186":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v258"}}]},"effectVariables":{},"entityVariables":{}},"187":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"188":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"189":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"190":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"191":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"192":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v258"}}]},"effectVariables":{},"entityVariables":{}},"193":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"variable","name":"_v257"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"194":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"variable","name":"_v257"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"195":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v257"},{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"196":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"197":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"198":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v258"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"199":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"200":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"201":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"202":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"203":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"204":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"205":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"206":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"207":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"208":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"209":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"210":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"211":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"212":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"213":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"214":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"215":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"216":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"217":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"218":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"219":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"220":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"221":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"222":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"223":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]},"effectVariables":{},"entityVariables":{}},"224":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]},"effectVariables":{},"entityVariables":{}},"225":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]},"effectVariables":{},"entityVariables":{}},"226":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"227":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"228":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"229":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"230":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"231":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"232":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v286"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"233":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"234":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"235":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"236":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"237":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"238":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"239":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"240":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"241":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"242":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v286"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"243":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v286"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"244":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"245":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]},"effectVariables":{},"entityVariables":{}},"246":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]},"effectVariables":{},"entityVariables":{}},"247":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]},"effectVariables":{},"entityVariables":{}},"248":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"249":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"250":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"251":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"252":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"253":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"254":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v313"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"255":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"256":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"257":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"258":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"259":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"260":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"261":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"262":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"263":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"264":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v313"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"265":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v313"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"266":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"267":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]},"effectVariables":{},"entityVariables":{}},"268":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]},"effectVariables":{},"entityVariables":{}},"269":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]},"effectVariables":{},"entityVariables":{}},"270":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"271":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"272":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"273":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"274":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"275":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"276":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v340"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"277":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"278":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"279":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"280":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"281":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"282":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"283":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"284":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"285":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"286":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v340"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"287":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v340"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"288":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"289":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"290":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"291":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"292":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"293":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"294":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"295":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"296":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"297":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"298":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"299":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"300":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"301":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"302":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"303":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"304":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"305":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}}]},"effectVariables":{},"entityVariables":{}},"306":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"307":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"308":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"309":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"310":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"311":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"312":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"313":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v365"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v366"}}]},"effectVariables":{},"entityVariables":{}},"314":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v365"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v366"}}]},"effectVariables":{},"entityVariables":{}},"315":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"316":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"317":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"318":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}},{"kind":"update","entity":{"kind":"variable","name":"_v364"}}]},"effectVariables":{},"entityVariables":{}},"319":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}}]},"effectVariables":{},"entityVariables":{}},"320":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v365"},{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"}]}},{"kind":"temporal","entity":{"kind":"variable","name":"_v366"}}]},"effectVariables":{},"entityVariables":{}},"321":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"322":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"323":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"324":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"325":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"326":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}}},"327":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"328":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"329":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"330":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"331":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"332":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"333":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"334":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"335":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"336":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"337":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"338":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"339":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"340":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"341":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"342":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"343":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"344":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"345":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"346":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"347":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"348":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"349":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"350":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"351":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"352":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"353":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"354":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"355":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"356":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"357":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"358":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"359":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"360":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"361":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"362":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"363":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"364":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"365":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"366":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"367":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"368":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"369":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"370":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"371":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"372":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"373":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"374":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"375":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"376":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"377":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"378":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"379":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"380":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"381":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"382":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"383":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"384":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"385":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"386":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v432"}}]},"effectVariables":{},"entityVariables":{}},"387":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"388":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"389":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"390":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"391":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"392":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v432"}}]},"effectVariables":{},"entityVariables":{}},"393":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"394":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v432"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"395":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v432"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"396":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v432"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v432"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}}},"397":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"398":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"399":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"400":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"401":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"402":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"403":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"404":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"405":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"406":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"407":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"408":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"409":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"410":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"411":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"412":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"413":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"414":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"415":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"416":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"417":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"418":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"419":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"420":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"421":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"422":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"423":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"424":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"425":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"426":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"427":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"428":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"429":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"430":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"431":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"432":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]}},"433":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"434":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"435":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"436":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"437":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"438":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"439":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"440":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"441":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"442":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"443":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"444":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"445":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]}},"446":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"447":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"448":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"449":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"450":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"451":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"452":{"effect":{"kind":"variable","name":"_e54"},"effectVariables":{},"entityVariables":{}},"453":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"454":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"455":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"456":{"effect":{"kind":"variable","name":"_e56"},"effectVariables":{},"entityVariables":{}},"457":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"458":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"459":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"460":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"461":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"462":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"463":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"464":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"465":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}}]}},"466":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"467":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"468":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"469":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"470":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"471":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"472":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"473":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"474":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"475":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"476":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"477":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]}},"478":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"479":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"480":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"481":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"482":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"483":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"484":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"485":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"486":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"487":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"488":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"489":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"490":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"491":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"492":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"493":{"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"494":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}}},"errors":[]}
\ No newline at end of file
From 2dbc842b82f839d7284110ebdd8af9c6ac7bda4b Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Fri, 24 Nov 2023 14:03:21 -0500
Subject: [PATCH 02/14] Add conversion of quint sum types
Also removes deprecated union types
---
.../forsyte/apalache/io/quint/QuintIR.scala | 17 ++++----
.../io/quint/QuintTypeConverter.scala | 41 ++++++++++---------
.../apalache/io/quint/TestQuintTypes.scala | 16 +++-----
3 files changed, 35 insertions(+), 39 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintIR.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintIR.scala
index ab2aba1567..3c7b06a78d 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintIR.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintIR.scala
@@ -379,7 +379,7 @@ private[quint] object QuintType {
QuintOperT.rw,
QuintTupleT.rw,
QuintRecordT.rw,
- QuintUnionT.rw,
+ QuintSumT.rw,
)
// NOTE: Contrary to quint values, for quint types, source IDs are optional.
@@ -500,13 +500,14 @@ private[quint] object QuintType {
}
}
- case class UnionRecord(tagValue: String, fields: Row)
- object UnionRecord {
- implicit val rw: RW[UnionRecord] = macroRW
- }
+ @key("sum") case class QuintSumT(fields: Row) extends QuintType
+ object QuintSumT {
+ implicit val rw: RW[QuintSumT] = macroRW
- @key("union") case class QuintUnionT(tag: String, records: Seq[UnionRecord]) extends QuintType
- object QuintUnionT {
- implicit val rw: RW[QuintUnionT] = macroRW
+ // Helper for manually constructing record type
+ def ofVariantTypes(variantTypes: (String, QuintType)*): QuintSumT = {
+ val fields = variantTypes.map { case (f, t) => RecordField(f, t) }
+ QuintSumT(Row.Cell(fields, Row.Nil()))
+ }
}
}
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
index 3aef641c01..8bcc8fd740 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
@@ -112,27 +112,28 @@ private class QuintTypeConverter extends LazyLogging {
// rows and convert them into a single TlaType1 record, for which all the values
// are themselves records, and the keys are given by the values of the `tag`
// field from quint rows.
- private def unionToRowT1(variants: Seq[UnionRecord]): RowT1 = {
- val fieldTypes = variants.map {
- case UnionRecord(tag, row) => {
- (tag, RecRowT1(rowToRowT1(row)))
- }
- }
- RowT1(fieldTypes: _*)
- }
+ // private def unionToRowT1(variants: Seq[UnionRecord]): RowT1 = {
+ // val fieldTypes = variants.map {
+ // case UnionRecord(tag, row) => {
+ // (tag, RecRowT1(rowToRowT1(row)))
+ // }
+ // }
+ // RowT1(fieldTypes: _*)
+ // }
val convert: QuintType => TlaType1 = {
- case QuintBoolT() => BoolT1
- case QuintIntT() => IntT1
- case QuintStrT() => StrT1
- case QuintConstT(name) => ConstT1(name)
- case QuintVarT(name) => VarT1(getVarNo(name))
- case QuintSetT(elem) => SetT1(convert(elem))
- case QuintSeqT(elem) => SeqT1(convert(elem))
- case QuintFunT(arg, res) => FunT1(convert(arg), convert(res))
- case QuintOperT(args, res) => OperT1(args.map(convert), convert(res))
- case QuintTupleT(row) => rowToTupleT1(row)
- case QuintRecordT(row) => RecRowT1(rowToRowT1(row))
- case QuintUnionT(_, variants) => VariantT1(unionToRowT1(variants))
+ case QuintBoolT() => BoolT1
+ case QuintIntT() => IntT1
+ case QuintStrT() => StrT1
+ case QuintConstT(name) => ConstT1(name)
+ case QuintVarT(name) => VarT1(getVarNo(name))
+ case QuintSetT(elem) => SetT1(convert(elem))
+ case QuintSeqT(elem) => SeqT1(convert(elem))
+ case QuintFunT(arg, res) => FunT1(convert(arg), convert(res))
+ case QuintOperT(args, res) => OperT1(args.map(convert), convert(res))
+ case QuintTupleT(row) => rowToTupleT1(row)
+ case QuintRecordT(row) => RecRowT1(rowToRowT1(row))
+ case QuintSumT(row) => VariantT1(rowToRowT1(row))
+ // case QuintUnionT(_, variants) => VariantT1(unionToRowT1(variants))
}
}
diff --git a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala
index 4273087bfb..569bf793c1 100644
--- a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala
+++ b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala
@@ -55,20 +55,14 @@ class TestQuintTypes extends AnyFunSuite {
}
test("Quint unions are converted into TlaType1 variants") {
- val opt1 =
- // i.e.: {tag: "t1", f1: int}
- UnionRecord("t1", Row.Cell(List(RecordField("f1", QuintIntT())), Row.Nil()))
- val opt2 =
- // i.e.: {tag: "t2", f2: string}
- UnionRecord("t2", Row.Cell(List(RecordField("f2", QuintStrT())), Row.Nil()))
- val variant =
- // i.e.: | {tag: "t1", f1: int} | {tag: "t2", f2: string}
- QuintUnionT("tag", List(opt1, opt2))
+ val quintSumType =
+ // i.e.: F1(int) | F2(str)
+ QuintSumT(Row.Cell(List(RecordField("F1", QuintIntT()), RecordField("F2", QuintStrT())), Row.Nil()))
val expectedVariant =
// i.e.: t1({ f1: Int }) | t2({ f2: Str })
- VariantT1(RowT1("t1" -> RecRowT1(RowT1(("f1" -> IntT1))), "t2" -> RecRowT1(RowT1(("f2" -> StrT1)))))
- assert(translate(variant) == expectedVariant)
+ VariantT1(RowT1("F1" -> IntT1, "F2" -> StrT1))
+ assert(translate(quintSumType) == expectedVariant)
}
// tictactoe.json is located in tla-io/src/test/resources/tictactoe.json
From b25f9848d46cc9ad09d327d4c15ea6d95cb67e88 Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Fri, 24 Nov 2023 14:26:49 -0500
Subject: [PATCH 03/14] Remove overly strict reqirement on ConstT1
There is no reason to enforce this bit of surface syntactic trivia
on the AST level, and it imposes needless overhead in the quint
conversion.
We enforce this in parser for the Apalache type annotations, and that
should suffice.
---
.../src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala | 3 ---
1 file changed, 3 deletions(-)
diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala
index 420f0ea8ad..20ceaa97d0 100644
--- a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala
+++ b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala
@@ -107,9 +107,6 @@ case object StrT1 extends TlaType1 {
* unique name of the constant type
*/
case class ConstT1(name: String) extends TlaType1 {
- require(ConstT1.isUninterpreted(name) || ConstT1.isAliasReference(name),
- "ConstT1 accepts identifiers in upper case or $aliasReference, found: " + name)
-
override def toString: String = name
override def usedNames: Set[Int] = Set.empty
From a0be2d3a3ee8388167af7474880b0d346a0018ac Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Fri, 24 Nov 2023 15:04:04 -0500
Subject: [PATCH 04/14] Improve error message from invalid IR conversion
This gives us much more context when error conversion goes wrong due to
an operator we expect to be defined missing an entry in the lookup table.
---
.../at/forsyte/apalache/io/quint/Quint.scala | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
index 5afe99a046..06c257a0d4 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
@@ -15,7 +15,7 @@ import scalaz._
import scalaz.std.list._
import scalaz.syntax.traverse._
-import scala.util.Try
+import scala.util.{Failure, Success, Try}
// Convert a QuintEx into a TlaEx
//
@@ -54,15 +54,15 @@ class Quint(quintOutput: QuintOutput) {
private type NullaryOpReader[A] = Reader[Set[String], A]
// Find the type for an id via the lookup table provided in the quint output
- private def getTypeFromLookupTable(id: BigInt): QuintType = {
+ private def getTypeFromLookupTable(id: BigInt): Try[QuintType] = {
table.get(id) match {
- case None => throw new QuintIRParseError(s"No entry found for id ${id} in lookup table")
+ case None => Failure(new QuintIRParseError(s"No entry found for id ${id} in lookup table"))
case Some(lookupEntry) =>
types.get(lookupEntry.id) match {
case None =>
- throw new QuintIRParseError(
- s"No type found for definition ${lookupEntry.name} (${lookupEntry.id}) associated with id ${id}")
- case Some(t) => t.typ
+ Failure(new QuintIRParseError(
+ s"No type found for definition ${lookupEntry.name} (${lookupEntry.id}) associated with id ${id}"))
+ case Some(t) => Success(t.typ)
}
}
}
@@ -555,7 +555,12 @@ class Quint(quintOutput: QuintOutput) {
// Otherwise, the applied operator is defined, and not a builtin
case definedOpName => { args =>
- val operType = typeConv.convert(getTypeFromLookupTable(id))
+ val quintType = getTypeFromLookupTable(id).recoverWith { case err: QuintIRParseError =>
+ Failure(new QuintIRParseError(
+ s"While converting operator application of defined operator '${definedOpName}' to arguments ${args}: ${err
+ .getMessage()}"))
+ }.get
+ val operType = typeConv.convert(quintType)
val oper = tla.name(definedOpName, operType)
args.toList.traverse(tlaExpression).map(tlaArgs => tla.appOp(oper, tlaArgs: _*))
}
From b8ee753285ec8bd812acb7c0adf38e1fc3757038 Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Sun, 26 Nov 2023 16:01:50 -0500
Subject: [PATCH 05/14] Allow building empty records
Used as the unit type in quint, and causes no problems
when used in this way.
---
.../at/forsyte/apalache/io/quint/Quint.scala | 43 +++--
.../apalache/io/quint/TestQuintEx.scala | 11 +-
.../apalache/tla/lir/oper/TlaFunOper.scala | 2 +-
.../typecomp/unsafe/UnsafeFunBuilder.scala | 2 +-
.../apalache/tla/lir/TestBuilder.scala | 157 +++++++++---------
.../tla/typecomp/TestFunBuilder.scala | 10 --
6 files changed, 103 insertions(+), 122 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
index 06c257a0d4..3a1ec2e71a 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
@@ -371,28 +371,27 @@ class Quint(quintOutput: QuintOutput) {
})
// Create a TLA record
- def record(rowVar: Option[String]): Converter = {
- case Seq() => throw new QuintUnsupportedError("Given empty record, but Apalache doesn't support empty records.")
- case quintArgs =>
- // The quint Rec operator takes its field and value arguments
- // via a variadic operator requiring field names passed as strings to
- // be alternated with values. E.g.,
- //
- // Rec("f1", 1, "f2", 2)
- //
- // So we first separate out the field names from the values, so we
- // can make use of the existing combinator for variadic operators.
- val (fieldNames, quintVals) = quintArgs
- .grouped(2)
- .foldRight((List[String](), List[QuintEx]())) {
- case (Seq(QuintStr(_, f), v), (fields, values)) => ((f :: fields), v :: values)
- case (invalidArgs, _) =>
- throw new QuintIRParseError(s"Invalid argument given to Rec ${invalidArgs}")
- }
- variadicApp { tlaVals =>
- val fieldsAndArgs = fieldNames.zip(tlaVals)
- tla.rowRec(rowVar, fieldsAndArgs: _*)
- }(quintVals)
+ def record(rowVar: Option[String]): Converter = { quintArgs =>
+ // The quint Rec operator takes its field and value arguments
+ // via a variadic operator requiring field names passed as strings to
+ // be alternated with values. E.g.,
+ //
+ // Rec("f1", 1, "f2", 2)
+ //
+ // So we first separate out the field names from the values, so we
+ // can make use of the existing combinator for variadic operators.
+ val (fieldNames, quintVals) = quintArgs
+ .grouped(2)
+ .foldRight((List[String](), List[QuintEx]())) {
+ case (Seq(QuintStr(_, f), v), (fields, values)) => ((f :: fields), v :: values)
+ case (invalidArgs, _) =>
+ throw new QuintIRParseError(s"Invalid argument given to Rec ${invalidArgs}")
+ }
+ variadicApp { tlaVals =>
+ val fieldsAndArgs = fieldNames.zip(tlaVals)
+ tla.rowRec(rowVar, fieldsAndArgs: _*)
+ }(quintVals)
+ }
}
}
diff --git a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
index 11f0ec773c..72cb8b1f9e 100644
--- a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
+++ b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
@@ -518,20 +518,13 @@ class TestQuintEx extends AnyFunSuite {
QuintSeqT(QuintIntT()))) == "Apalache!MkSeq(42 - 3, LET __QUINT_LAMBDA0(__quint_var0) ≜ (3 + __quint_var0) - 1 IN __QUINT_LAMBDA0)")
}
+ /// RECORDS
+
test("can convert builtin Rec operator application") {
val typ = QuintRecordT.ofFieldTypes(("s", QuintIntT()), ("t", QuintIntT()))
assert(convert(Q.app("Rec", Q.s, Q._1, Q.t, Q._2)(typ)) == """["s" ↦ 1, "t" ↦ 2]""")
}
- test("converting builtin Rec operator constructing empty record fails") {
- val exn = intercept[QuintUnsupportedError] {
- val typ = QuintRecordT.ofFieldTypes()
- convert(Q.app("Rec")(typ))
- }
- assert(exn.getMessage.contains(
- "Unsupported quint input: Given empty record, but Apalache doesn't support empty records."))
- }
-
test("can convert row-polymorphic record") {
val typ = QuintRecordT.ofFieldTypes("a", ("s", QuintIntT()), ("t", QuintIntT()))
val quintEx = Q.app("Rec", Q.s, Q._1, Q.t, Q._2)(typ)
diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/oper/TlaFunOper.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/oper/TlaFunOper.scala
index 7100106e79..396b9f653a 100644
--- a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/oper/TlaFunOper.scala
+++ b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/oper/TlaFunOper.scala
@@ -18,7 +18,7 @@ object TlaFunOper {
* is why we call it "REC_CTOR".
*/
object rec extends TlaFunOper {
- override def arity: OperArity = AnyEvenArity() && MinimalArity(2)
+ override def arity: OperArity = AnyEvenArity()
override val name: String = "RECORD"
override val precedence: (Int, Int) = (16, 16) // as the function application
diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/typecomp/unsafe/UnsafeFunBuilder.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/typecomp/unsafe/UnsafeFunBuilder.scala
index ff2be96479..f2b4bfa763 100644
--- a/tlair/src/main/scala/at/forsyte/apalache/tla/typecomp/unsafe/UnsafeFunBuilder.scala
+++ b/tlair/src/main/scala/at/forsyte/apalache/tla/typecomp/unsafe/UnsafeFunBuilder.scala
@@ -23,7 +23,7 @@ class UnsafeFunBuilder extends ProtoBuilder {
private def mkTlaStr: String => TlaEx = strBuilder.str
private def formRecordFieldTypes(args: Seq[TlaEx]): SortedMap[String, TlaType1] = {
- require(TlaFunOper.rec.arity.cond(args.size), s"Expected record args to have even, positive arity, found $args.")
+ require(TlaFunOper.rec.arity.cond(args.size), s"Expected record args to have even arity, found $args.")
// All keys must be ValEx(TlaStr(_))
val (keys, _) = TlaOper.deinterleave(args)
require(keys.forall {
diff --git a/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala b/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala
index 4b2c684b7a..32f45a5ae1 100644
--- a/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala
+++ b/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala
@@ -9,83 +9,83 @@ import at.forsyte.apalache.tla.lir.UntypedPredefs._
@RunWith(classOf[JUnitRunner])
class TestBuilder extends AnyFunSuite with TestingPredefs {
- private val bd = new Builder()
-
- test("Test direct methods: Names and values") {
- val nameBuild: TlaEx = bd.name("a")
-
- assert(nameBuild == NameEx("a"))
-
- val vBigInt: BigInt = BigInt("1000000015943534656464398536")
- val vBigDecimal: BigDecimal = 1.111132454253626474876842798573504607
- val vBool: Boolean = false
- val vString: String = "a string val"
-
- val biBuild = bd.bigInt(vBigInt).untyped()
- val bdBuild = bd.decimal(vBigDecimal).untyped()
- val boolBuild = bd.bool(vBool).untyped()
- val strBuild = bd.str(vString).untyped()
-
- assert(biBuild == ValEx(TlaInt(vBigInt)))
- assert(bdBuild == ValEx(TlaDecimal(vBigDecimal)))
- assert(boolBuild == ValEx(TlaBool(vBool)))
- assert(strBuild == ValEx(TlaStr(vString)))
- }
-
- test("Test direct methods: Declarations") {
- val decl1 = bd.declOp("A", n_c).untypedOperDecl()
- val decl2 = bd.declOp("A", n_x, "x").untypedOperDecl()
- val decl3 = bd.declOp("A", bd.appOp(n_B), ("B", 0)).untypedOperDecl()
- val decl4 = bd.declOp("A", bd.appOp(n_B, n_x), "x", ("B", 1)).untypedOperDecl()
-
- assert(decl1 == TlaOperDecl("A", List(), n_c))
- assert(decl2 == TlaOperDecl("A", List(OperParam("x")), n_x))
- assert(decl3 ==
- TlaOperDecl(
- "A",
- List(OperParam("B", 0)),
- OperEx(TlaOper.apply, n_B),
- ))
- assert(decl4 ==
- TlaOperDecl(
- "A",
- List(OperParam("x"), OperParam("B", 1)),
- OperEx(TlaOper.apply, n_B, n_x),
- ))
-
- val appEx1 = bd.appDecl(decl1).untyped()
- val appEx2 = bd.appDecl(decl2, n_a).untyped()
- val appEx3 = bd.appDecl(decl3, n_a).untyped()
- val appEx4 = bd.appDecl(decl4, n_a, n_b).untyped()
-
- assert(appEx1 == OperEx(TlaOper.apply, name(decl1.name)))
- assertThrows[IllegalArgumentException](bd.appDecl(decl1, n_a))
- assertThrows[IllegalArgumentException](bd.appDecl(decl2))
- assert(appEx2 == OperEx(TlaOper.apply, name(decl2.name), n_a))
- assertThrows[IllegalArgumentException](bd.appDecl(decl2, n_a, n_b))
- assertThrows[IllegalArgumentException](bd.appDecl(decl3))
- assert(appEx3 == OperEx(TlaOper.apply, name(decl3.name), n_a))
- assertThrows[IllegalArgumentException](bd.appDecl(decl3, n_a, n_b))
- assertThrows[IllegalArgumentException](bd.appDecl(decl4))
- assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a))
- assert(appEx4 == OperEx(TlaOper.apply, name(decl4.name), n_a, n_b))
- assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a, n_b, n_c))
- }
-
- test("Test byName: bad calls") {
- assertThrows[NoSuchElementException](bd.byName("not an operator name", NullEx, n_b))
-
- assertThrows[IllegalArgumentException](bd.byName(TlaArithOper.plus.name, NullEx).untyped())
- }
-
- test("Test byNameOrNull: bad calls") {
- val nullBadName = bd.byNameOrNull("not an operator name", NullEx, n_b).untyped()
-
- assert(nullBadName == NullEx)
-
- val nullBadArity = bd.byNameOrNull(TlaArithOper.plus.name, NullEx).untyped()
-
- assert(nullBadArity == NullEx)
+ private val bd = new Builder()
+
+ test("Test direct methods: Names and values") {
+ val nameBuild: TlaEx = bd.name("a")
+
+ assert(nameBuild == NameEx("a"))
+
+ val vBigInt: BigInt = BigInt("1000000015943534656464398536")
+ val vBigDecimal: BigDecimal = 1.111132454253626474876842798573504607
+ val vBool: Boolean = false
+ val vString: String = "a string val"
+
+ val biBuild = bd.bigInt(vBigInt).untyped()
+ val bdBuild = bd.decimal(vBigDecimal).untyped()
+ val boolBuild = bd.bool(vBool).untyped()
+ val strBuild = bd.str(vString).untyped()
+
+ assert(biBuild == ValEx(TlaInt(vBigInt)))
+ assert(bdBuild == ValEx(TlaDecimal(vBigDecimal)))
+ assert(boolBuild == ValEx(TlaBool(vBool)))
+ assert(strBuild == ValEx(TlaStr(vString)))
+ }
+
+ test("Test direct methods: Declarations") {
+ val decl1 = bd.declOp("A", n_c).untypedOperDecl()
+ val decl2 = bd.declOp("A", n_x, "x").untypedOperDecl()
+ val decl3 = bd.declOp("A", bd.appOp(n_B), ("B", 0)).untypedOperDecl()
+ val decl4 = bd.declOp("A", bd.appOp(n_B, n_x), "x", ("B", 1)).untypedOperDecl()
+
+ assert(decl1 == TlaOperDecl("A", List(), n_c))
+ assert(decl2 == TlaOperDecl("A", List(OperParam("x")), n_x))
+ assert(decl3 ==
+ TlaOperDecl(
+ "A",
+ List(OperParam("B", 0)),
+ OperEx(TlaOper.apply, n_B),
+ ))
+ assert(decl4 ==
+ TlaOperDecl(
+ "A",
+ List(OperParam("x"), OperParam("B", 1)),
+ OperEx(TlaOper.apply, n_B, n_x),
+ ))
+
+ val appEx1 = bd.appDecl(decl1).untyped()
+ val appEx2 = bd.appDecl(decl2, n_a).untyped()
+ val appEx3 = bd.appDecl(decl3, n_a).untyped()
+ val appEx4 = bd.appDecl(decl4, n_a, n_b).untyped()
+
+ assert(appEx1 == OperEx(TlaOper.apply, name(decl1.name)))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl1, n_a))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl2))
+ assert(appEx2 == OperEx(TlaOper.apply, name(decl2.name), n_a))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl2, n_a, n_b))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl3))
+ assert(appEx3 == OperEx(TlaOper.apply, name(decl3.name), n_a))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl3, n_a, n_b))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl4))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a))
+ assert(appEx4 == OperEx(TlaOper.apply, name(decl4.name), n_a, n_b))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a, n_b, n_c))
+ }
+
+ test("Test byName: bad calls") {
+ assertThrows[NoSuchElementException](bd.byName("not an operator name", NullEx, n_b))
+
+ assertThrows[IllegalArgumentException](bd.byName(TlaArithOper.plus.name, NullEx).untyped())
+ }
+
+ test("Test byNameOrNull: bad calls") {
+ val nullBadName = bd.byNameOrNull("not an operator name", NullEx, n_b).untyped()
+
+ assert(nullBadName == NullEx)
+
+ val nullBadArity = bd.byNameOrNull(TlaArithOper.plus.name, NullEx).untyped()
+
+ assert(nullBadArity == NullEx)
}
test("Test direct methods: TlaOper") {
@@ -1121,7 +1121,6 @@ class TestBuilder extends AnyFunSuite with TestingPredefs {
val enumBuild1 = bd.byName(TlaFunOper.rec.name, n_a, n_b).untyped()
val enumBuild2 = bd.byName(TlaFunOper.rec.name, n_a, n_b, n_c, n_d).untyped()
- assertThrows[IllegalArgumentException](bd.byName(TlaFunOper.rec.name).untyped())
assertThrows[IllegalArgumentException](bd.byName(TlaFunOper.rec.name, n_a).untyped())
assert(enumBuild1 == OperEx(TlaFunOper.rec, n_a, n_b))
assertThrows[IllegalArgumentException](bd.byName(TlaFunOper.rec.name, n_a, n_b, n_c).untyped())
@@ -1181,7 +1180,7 @@ class TestBuilder extends AnyFunSuite with TestingPredefs {
val enumBuild2 = bd.byNameOrNull(TlaFunOper.rec.name, n_a, n_b, n_c, n_d).untyped()
val enumBuildBad2 = bd.byNameOrNull(TlaFunOper.rec.name, n_a, n_b, n_c, n_d, n_e).untyped()
- assert(enumBuildEmpty == NullEx)
+ assert(enumBuildEmpty == OperEx(TlaFunOper.rec))
assert(enumBuild1 == OperEx(TlaFunOper.rec, n_a, n_b))
assert(enumBuildBad1 == NullEx)
assert(enumBuild2 == OperEx(TlaFunOper.rec, n_a, n_b, n_c, n_d))
diff --git a/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala b/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala
index f1efb50235..579cd8b288 100644
--- a/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala
+++ b/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala
@@ -47,11 +47,6 @@ class TestFunBuilder extends BuilderTest {
)
)
- // test fail on n = 0
- assertThrows[IllegalArgumentException] {
- build(builder.recMixed())
- }
-
// test fail on n = 1
assertThrows[IllegalArgumentException] {
build(builder.recMixed(builder.str("x")))
@@ -108,11 +103,6 @@ class TestFunBuilder extends BuilderTest {
)
)
- // test fail on n = 0
- assertThrows[IllegalArgumentException] {
- build(builder.rec())
- }
-
// test fail on repeated key
assertThrows[IllegalArgumentException] {
build(builder.rec(
From 86eede5f43e10118432e67bdfceef7ae9cf101ff Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Sun, 26 Nov 2023 16:11:56 -0500
Subject: [PATCH 06/14] Add conversion of variant and match expressions
---
.../at/forsyte/apalache/io/quint/Quint.scala | 56 ++++++++++++++++++-
.../apalache/io/quint/TestQuintEx.scala | 29 ++++++++++
2 files changed, 83 insertions(+), 2 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
index 3a1ec2e71a..91f1629fb2 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
@@ -16,6 +16,7 @@ import scalaz.std.list._
import scalaz.syntax.traverse._
import scala.util.{Failure, Success, Try}
+import at.forsyte.apalache.tla.lir.values.TlaStr
// Convert a QuintEx into a TlaEx
//
@@ -393,6 +394,53 @@ class Quint(quintOutput: QuintOutput) {
}(quintVals)
}
+ // Create a TLA variant
+ // TODO: We fix builder type error when sum type constructors are nested
+ // See https://github.com/informalsystems/quint/issues/1034#issuecomment-1826894723
+ def variant(quintType: QuintType): Converter = {
+ val tlaType = typeConv.convert(quintType)
+ tlaType match {
+ case variantType: VariantT1 =>
+ binaryApp("variant",
+ (labelInstruction, expr) =>
+ // The builder requires a string literal, rather than a string expression
+ // so we have to build the converted TLA expression and extract its string value.
+ labelInstruction.flatMap {
+ case ValEx(TlaStr(label)) => tla.variant(label, expr, variantType)
+ case invalidLabel =>
+ throw new QuintIRParseError(s"Invalid label found in application of variant ${invalidLabel}")
+ })
+ case _ => throw new QuintIRParseError(s"Invalid type inferred for application of variant ${quintType}")
+ }
+ }
+
+ // the quint builtin operator representing match expressions looks like
+ //
+ // matchVariant(expr, "F1", elim_1, ..., "Fn", elim_n)
+ //
+ // Where each `elim_i` is an operator applying to value wrapped in field `Fi` of a variant.
+ //
+ // This is converted into the following Apalache expression, using Apalache's variant operators:
+ //
+ // CASE VariantTag(expr) = "F1" -> elim_1(VariantGetUnsafe(expr))
+ // [] ...
+ // [] VariantTag(expr) = "Fn" -> elim_n(VariantGetUnsafe(expr))
+ //
+ // This ensures that we will apply the proper eliminator to the expected value
+ // associated with whatever tag is carried by the variant `expr`.
+ def matchVariant: Converter = variadicApp { case expr +: cases =>
+ val variantTagCondition = (caseTag) => tla.eql(tla.variantTag(expr), caseTag)
+ val casesInstructions: Seq[(T, T)] =
+ cases.grouped(2).toSeq.map { case Seq(label, elim) =>
+ val appliedElim = label.flatMap {
+ case ValEx(TlaStr(labelLit)) =>
+ tla.appOp(elim, tla.variantGetUnsafe(labelLit, expr))
+ case invalidLabel =>
+ throw new QuintIRParseError(s"Invalid label found in matchVariant case ${invalidLabel}")
+ }
+ variantTagCondition(label) -> appliedElim
+ }
+ tla.caseSplit(casesInstructions: _*)
}
}
@@ -512,6 +560,10 @@ class Quint(quintOutput: QuintOutput) {
case "fieldNames" => unaryApp(opName, tla.dom)
case "with" => ternaryApp(opName, tla.except)
+ // Sum types
+ case "variant" => MkTla.variant(types(id).typ)
+ case "matchVariant" => MkTla.matchVariant
+
// Maps (functions)
// Map is variadic on n tuples, so build a set of these tuple args
// before converting the resulting set of tuples to a function.
@@ -643,10 +695,10 @@ class Quint(quintOutput: QuintOutput) {
case app: QuintApp => tlaApplication(app)
}
- // `tlaDef(quintDef)` is a NullaryOpReader that can be run to obtain a value `Some((tlaDecl, maybeName))`
+ // `tlaDef(quintDef)` is a NullaryOpReader that can be run to obtain a value `Some((maybeName, tlaDecl))`
// where `tlaDecl` is derived from the given `quintDef`, and `maybeName` is `Some(n)` when the `quintDef`
// defines a nullary operator named `n`, or `None` when `quintDef` is not a nullary operator definition.
- // If the `quintDef` is not convertable (e.g., a quint type definition), it the outer value is `None`.
+ // If the `quintDef` is not convertable (e.g., a quint type definition), then the outer value is `None`.
def tlaDef(quintDef: QuintDef): NullaryOpReader[Option[(Option[String], TlaDecl)]] = {
import QuintDef._
Reader(nullaryOps =>
diff --git a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
index 72cb8b1f9e..1b48b990b0 100644
--- a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
+++ b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
@@ -113,6 +113,8 @@ class TestQuintEx extends AnyFunSuite {
val _42 = e(QuintInt(uid, 42), QuintIntT())
val s = e(QuintStr(uid, "s"), QuintStrT())
val t = e(QuintStr(uid, "t"), QuintStrT())
+ val labelF1 = e(QuintStr(uid, "F1"), QuintStrT())
+ val labelF2 = e(QuintStr(uid, "F2"), QuintStrT())
// Names and parameters
val name = e(QuintName(uid, "n"), QuintIntT())
@@ -577,6 +579,8 @@ class TestQuintEx extends AnyFunSuite {
assert(tlaOpDef.typeTag == Typed(expectedTlaType))
}
+ /// TUPLES
+
test("can convert builtin Tup operator application") {
assert(convert(Q.app("Tup", Q._0, Q._1)(QuintTupleT.ofTypes(QuintIntT(), QuintIntT()))) == "<<0, 1>>")
}
@@ -594,6 +598,31 @@ class TestQuintEx extends AnyFunSuite {
assert(convert(Q.app("tuples", Q.intSet, Q.intSet, Q.intSet)(typ)) == "{1, 2, 3} × {1, 2, 3} × {1, 2, 3}")
}
+ /// SUM TYPES
+
+ test("can convert builtin variant operator application") {
+ val typ = QuintSumT.ofVariantTypes("F1" -> QuintIntT(), "F2" -> QuintIntT())
+ assert(convert(Q.app("variant", Q.labelF1, Q._42)(typ)) == """Variants!Variant("F1", 42)""")
+ }
+
+ test("can convert builtin matchVariant operator application") {
+ val typ = QuintSumT.ofVariantTypes("F1" -> QuintIntT(), "F2" -> QuintRecordT.ofFieldTypes())
+ val variant = Q.app("variant", Q.labelF1, Q._42)(typ)
+ val quintMatch = Q.app(
+ "matchVariant",
+ variant,
+ Q.labelF1,
+ Q.lam(Seq("x" -> QuintIntT()), Q._1, QuintIntT()),
+ Q.labelF2,
+ Q.lam(Seq("y" -> QuintRecordT.ofFieldTypes()), Q._2, QuintIntT()),
+ )(typ)
+ val expected =
+ """|CASE (Variants!VariantTag(Variants!Variant("F1", 42)) = "F1") → LET __QUINT_LAMBDA0(x) ≜ 1 IN __QUINT_LAMBDA0(Variants!VariantGetUnsafe("F1", Variants!Variant("F1", 42)))
+ |☐ (Variants!VariantTag(Variants!Variant("F1", 42)) = "F2") → LET __QUINT_LAMBDA1(y) ≜ 2 IN __QUINT_LAMBDA1(Variants!VariantGetUnsafe("F2", Variants!Variant("F1", 42)))""".stripMargin
+ .replace('\n', ' ')
+ assert(convert(quintMatch) == expected)
+ }
+
test("can convert builtin assert operator") {
assert(convert(Q.app("assert", Q.nIsGreaterThan0)(QuintBoolT())) == "n > 0")
}
From 0ccff9fa3abfc80a8f9f4e93dafda4d96393bb7f Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Sun, 26 Nov 2023 18:29:50 -0500
Subject: [PATCH 07/14] Fix formatting
---
.../apalache/tla/lir/TestBuilder.scala | 154 +++++++++---------
1 file changed, 77 insertions(+), 77 deletions(-)
diff --git a/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala b/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala
index 32f45a5ae1..589e52216e 100644
--- a/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala
+++ b/tlair/src/test/scala/at/forsyte/apalache/tla/lir/TestBuilder.scala
@@ -9,83 +9,83 @@ import at.forsyte.apalache.tla.lir.UntypedPredefs._
@RunWith(classOf[JUnitRunner])
class TestBuilder extends AnyFunSuite with TestingPredefs {
- private val bd = new Builder()
-
- test("Test direct methods: Names and values") {
- val nameBuild: TlaEx = bd.name("a")
-
- assert(nameBuild == NameEx("a"))
-
- val vBigInt: BigInt = BigInt("1000000015943534656464398536")
- val vBigDecimal: BigDecimal = 1.111132454253626474876842798573504607
- val vBool: Boolean = false
- val vString: String = "a string val"
-
- val biBuild = bd.bigInt(vBigInt).untyped()
- val bdBuild = bd.decimal(vBigDecimal).untyped()
- val boolBuild = bd.bool(vBool).untyped()
- val strBuild = bd.str(vString).untyped()
-
- assert(biBuild == ValEx(TlaInt(vBigInt)))
- assert(bdBuild == ValEx(TlaDecimal(vBigDecimal)))
- assert(boolBuild == ValEx(TlaBool(vBool)))
- assert(strBuild == ValEx(TlaStr(vString)))
- }
-
- test("Test direct methods: Declarations") {
- val decl1 = bd.declOp("A", n_c).untypedOperDecl()
- val decl2 = bd.declOp("A", n_x, "x").untypedOperDecl()
- val decl3 = bd.declOp("A", bd.appOp(n_B), ("B", 0)).untypedOperDecl()
- val decl4 = bd.declOp("A", bd.appOp(n_B, n_x), "x", ("B", 1)).untypedOperDecl()
-
- assert(decl1 == TlaOperDecl("A", List(), n_c))
- assert(decl2 == TlaOperDecl("A", List(OperParam("x")), n_x))
- assert(decl3 ==
- TlaOperDecl(
- "A",
- List(OperParam("B", 0)),
- OperEx(TlaOper.apply, n_B),
- ))
- assert(decl4 ==
- TlaOperDecl(
- "A",
- List(OperParam("x"), OperParam("B", 1)),
- OperEx(TlaOper.apply, n_B, n_x),
- ))
-
- val appEx1 = bd.appDecl(decl1).untyped()
- val appEx2 = bd.appDecl(decl2, n_a).untyped()
- val appEx3 = bd.appDecl(decl3, n_a).untyped()
- val appEx4 = bd.appDecl(decl4, n_a, n_b).untyped()
-
- assert(appEx1 == OperEx(TlaOper.apply, name(decl1.name)))
- assertThrows[IllegalArgumentException](bd.appDecl(decl1, n_a))
- assertThrows[IllegalArgumentException](bd.appDecl(decl2))
- assert(appEx2 == OperEx(TlaOper.apply, name(decl2.name), n_a))
- assertThrows[IllegalArgumentException](bd.appDecl(decl2, n_a, n_b))
- assertThrows[IllegalArgumentException](bd.appDecl(decl3))
- assert(appEx3 == OperEx(TlaOper.apply, name(decl3.name), n_a))
- assertThrows[IllegalArgumentException](bd.appDecl(decl3, n_a, n_b))
- assertThrows[IllegalArgumentException](bd.appDecl(decl4))
- assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a))
- assert(appEx4 == OperEx(TlaOper.apply, name(decl4.name), n_a, n_b))
- assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a, n_b, n_c))
- }
-
- test("Test byName: bad calls") {
- assertThrows[NoSuchElementException](bd.byName("not an operator name", NullEx, n_b))
-
- assertThrows[IllegalArgumentException](bd.byName(TlaArithOper.plus.name, NullEx).untyped())
- }
-
- test("Test byNameOrNull: bad calls") {
- val nullBadName = bd.byNameOrNull("not an operator name", NullEx, n_b).untyped()
-
- assert(nullBadName == NullEx)
-
- val nullBadArity = bd.byNameOrNull(TlaArithOper.plus.name, NullEx).untyped()
-
- assert(nullBadArity == NullEx)
+ private val bd = new Builder()
+
+ test("Test direct methods: Names and values") {
+ val nameBuild: TlaEx = bd.name("a")
+
+ assert(nameBuild == NameEx("a"))
+
+ val vBigInt: BigInt = BigInt("1000000015943534656464398536")
+ val vBigDecimal: BigDecimal = 1.111132454253626474876842798573504607
+ val vBool: Boolean = false
+ val vString: String = "a string val"
+
+ val biBuild = bd.bigInt(vBigInt).untyped()
+ val bdBuild = bd.decimal(vBigDecimal).untyped()
+ val boolBuild = bd.bool(vBool).untyped()
+ val strBuild = bd.str(vString).untyped()
+
+ assert(biBuild == ValEx(TlaInt(vBigInt)))
+ assert(bdBuild == ValEx(TlaDecimal(vBigDecimal)))
+ assert(boolBuild == ValEx(TlaBool(vBool)))
+ assert(strBuild == ValEx(TlaStr(vString)))
+ }
+
+ test("Test direct methods: Declarations") {
+ val decl1 = bd.declOp("A", n_c).untypedOperDecl()
+ val decl2 = bd.declOp("A", n_x, "x").untypedOperDecl()
+ val decl3 = bd.declOp("A", bd.appOp(n_B), ("B", 0)).untypedOperDecl()
+ val decl4 = bd.declOp("A", bd.appOp(n_B, n_x), "x", ("B", 1)).untypedOperDecl()
+
+ assert(decl1 == TlaOperDecl("A", List(), n_c))
+ assert(decl2 == TlaOperDecl("A", List(OperParam("x")), n_x))
+ assert(decl3 ==
+ TlaOperDecl(
+ "A",
+ List(OperParam("B", 0)),
+ OperEx(TlaOper.apply, n_B),
+ ))
+ assert(decl4 ==
+ TlaOperDecl(
+ "A",
+ List(OperParam("x"), OperParam("B", 1)),
+ OperEx(TlaOper.apply, n_B, n_x),
+ ))
+
+ val appEx1 = bd.appDecl(decl1).untyped()
+ val appEx2 = bd.appDecl(decl2, n_a).untyped()
+ val appEx3 = bd.appDecl(decl3, n_a).untyped()
+ val appEx4 = bd.appDecl(decl4, n_a, n_b).untyped()
+
+ assert(appEx1 == OperEx(TlaOper.apply, name(decl1.name)))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl1, n_a))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl2))
+ assert(appEx2 == OperEx(TlaOper.apply, name(decl2.name), n_a))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl2, n_a, n_b))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl3))
+ assert(appEx3 == OperEx(TlaOper.apply, name(decl3.name), n_a))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl3, n_a, n_b))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl4))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a))
+ assert(appEx4 == OperEx(TlaOper.apply, name(decl4.name), n_a, n_b))
+ assertThrows[IllegalArgumentException](bd.appDecl(decl4, n_a, n_b, n_c))
+ }
+
+ test("Test byName: bad calls") {
+ assertThrows[NoSuchElementException](bd.byName("not an operator name", NullEx, n_b))
+
+ assertThrows[IllegalArgumentException](bd.byName(TlaArithOper.plus.name, NullEx).untyped())
+ }
+
+ test("Test byNameOrNull: bad calls") {
+ val nullBadName = bd.byNameOrNull("not an operator name", NullEx, n_b).untyped()
+
+ assert(nullBadName == NullEx)
+
+ val nullBadArity = bd.byNameOrNull(TlaArithOper.plus.name, NullEx).untyped()
+
+ assert(nullBadArity == NullEx)
}
test("Test direct methods: TlaOper") {
From 4152f929e90ddef76d57850bd77007a9486c1be8 Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Mon, 27 Nov 2023 05:57:57 -0500
Subject: [PATCH 08/14] Remove dead code
---
.../io/quint/QuintTypeConverter.scala | 44 -------------------
1 file changed, 44 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
index 8bcc8fd740..7ca774bd20 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
@@ -78,49 +78,6 @@ private class QuintTypeConverter extends LazyLogging {
}
}
- // Convert a quint union to a TlaType1 row (which is used to represent variants)
- //
- // NOTE: Union types in quint aren't fully implemented and supported, so this
- // corner of the transformation is likely to require update soon.
- // See https://github.com/informalsystems/quint/issues/244
- //
- // In quint, unions are currently represented by a list of tagged rows.
- // E.g., (abstracting rom the concrete type representation):
- //
- // ```
- // type u =
- // | ( "Foo", {a: Int, b: String })
- // | ( "Bar", {c: Set[Int] })
- // ```
- //
- // But Variant types in Apalache are represented by a single row, in which
- // the row's keys are the tags, and it's values can be of any type, e.g.:
- //
- // ```
- // type u = { "Foo": { a: Int, b: Str }
- // , "Bar": Set[Int]
- // }
- // ```
- //
- // Which we parse and represent as
- //
- // ```
- // @typeAlias: u = Foo({a: Int, b: Str}) | Bar(Int);
- // ```
- //
- // As a result, our conversion from quint has to take a list of records of quint
- // rows and convert them into a single TlaType1 record, for which all the values
- // are themselves records, and the keys are given by the values of the `tag`
- // field from quint rows.
- // private def unionToRowT1(variants: Seq[UnionRecord]): RowT1 = {
- // val fieldTypes = variants.map {
- // case UnionRecord(tag, row) => {
- // (tag, RecRowT1(rowToRowT1(row)))
- // }
- // }
- // RowT1(fieldTypes: _*)
- // }
-
val convert: QuintType => TlaType1 = {
case QuintBoolT() => BoolT1
case QuintIntT() => IntT1
@@ -134,6 +91,5 @@ private class QuintTypeConverter extends LazyLogging {
case QuintTupleT(row) => rowToTupleT1(row)
case QuintRecordT(row) => RecRowT1(rowToRowT1(row))
case QuintSumT(row) => VariantT1(rowToRowT1(row))
- // case QuintUnionT(_, variants) => VariantT1(unionToRowT1(variants))
}
}
From 684b892f209633c3a8f2a210d0630ed75f326bea Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Mon, 27 Nov 2023 06:18:39 -0500
Subject: [PATCH 09/14] Address comments
---
.../scala/at/forsyte/apalache/io/quint/Quint.scala | 2 ++
.../at/forsyte/apalache/io/quint/TestQuintEx.scala | 5 +++++
.../forsyte/apalache/io/quint/TestQuintTypes.scala | 4 ++--
.../apalache/tla/typecomp/TestFunBuilder.scala | 12 ++++++++++++
4 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
index 91f1629fb2..231bff4c37 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
@@ -381,6 +381,8 @@ class Quint(quintOutput: QuintOutput) {
//
// So we first separate out the field names from the values, so we
// can make use of the existing combinator for variadic operators.
+ //
+ // Empty records are fine: those are the unit value.
val (fieldNames, quintVals) = quintArgs
.grouped(2)
.foldRight((List[String](), List[QuintEx]())) {
diff --git a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
index 1b48b990b0..a7ac8f6644 100644
--- a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
+++ b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintEx.scala
@@ -527,6 +527,11 @@ class TestQuintEx extends AnyFunSuite {
assert(convert(Q.app("Rec", Q.s, Q._1, Q.t, Q._2)(typ)) == """["s" ↦ 1, "t" ↦ 2]""")
}
+ test("can convert builtin Rec operator constructing an empty record -- the unit type") {
+ val typ = QuintRecordT.ofFieldTypes()
+ assert(convert(Q.app("Rec")(typ)) == "[]")
+ }
+
test("can convert row-polymorphic record") {
val typ = QuintRecordT.ofFieldTypes("a", ("s", QuintIntT()), ("t", QuintIntT()))
val quintEx = Q.app("Rec", Q.s, Q._1, Q.t, Q._2)(typ)
diff --git a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala
index 569bf793c1..522f8482b0 100644
--- a/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala
+++ b/tla-io/src/test/scala/at/forsyte/apalache/io/quint/TestQuintTypes.scala
@@ -54,13 +54,13 @@ class TestQuintTypes extends AnyFunSuite {
assert(translate(record) == RecRowT1(RowT1(("f1" -> IntT1), ("f2" -> StrT1))))
}
- test("Quint unions are converted into TlaType1 variants") {
+ test("Quint sum types are converted into TlaType1 variants") {
val quintSumType =
// i.e.: F1(int) | F2(str)
QuintSumT(Row.Cell(List(RecordField("F1", QuintIntT()), RecordField("F2", QuintStrT())), Row.Nil()))
val expectedVariant =
- // i.e.: t1({ f1: Int }) | t2({ f2: Str })
+ // i.e.: F1(Int) | F1(Str)
VariantT1(RowT1("F1" -> IntT1, "F2" -> StrT1))
assert(translate(quintSumType) == expectedVariant)
}
diff --git a/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala b/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala
index 579cd8b288..f9b0ac668c 100644
--- a/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala
+++ b/tlair/src/test/scala/at/forsyte/apalache/tla/typecomp/TestFunBuilder.scala
@@ -47,6 +47,12 @@ class TestFunBuilder extends BuilderTest {
)
)
+ // test succeed on n = 0, the empty record
+ assert(build(builder.recMixed()).typeTag match {
+ case Typed(RecT1(map)) => map.isEmpty
+ case _ => false
+ })
+
// test fail on n = 1
assertThrows[IllegalArgumentException] {
build(builder.recMixed(builder.str("x")))
@@ -103,6 +109,12 @@ class TestFunBuilder extends BuilderTest {
)
)
+ // test succeed on n = 0, the empty record
+ assert(build(builder.rec()).typeTag match {
+ case Typed(RecT1(map)) => map.isEmpty
+ case _ => false
+ })
+
// test fail on repeated key
assertThrows[IllegalArgumentException] {
build(builder.rec(
From 82392e1ab35d8a92c4e37fefe9c1ba7a31e69b76 Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Wed, 29 Nov 2023 18:20:25 -0500
Subject: [PATCH 10/14] Add the require back
---
.../src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala
index 20ceaa97d0..420f0ea8ad 100644
--- a/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala
+++ b/tlair/src/main/scala/at/forsyte/apalache/tla/lir/TlaType1.scala
@@ -107,6 +107,9 @@ case object StrT1 extends TlaType1 {
* unique name of the constant type
*/
case class ConstT1(name: String) extends TlaType1 {
+ require(ConstT1.isUninterpreted(name) || ConstT1.isAliasReference(name),
+ "ConstT1 accepts identifiers in upper case or $aliasReference, found: " + name)
+
override def toString: String = name
override def usedNames: Set[Int] = Set.empty
From 6de0480c7599aacf52b99689fc972863ee363934 Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Wed, 29 Nov 2023 18:21:45 -0500
Subject: [PATCH 11/14] Remove outdated TODO
---
tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala | 2 --
1 file changed, 2 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
index 231bff4c37..6450c35926 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
@@ -397,8 +397,6 @@ class Quint(quintOutput: QuintOutput) {
}
// Create a TLA variant
- // TODO: We fix builder type error when sum type constructors are nested
- // See https://github.com/informalsystems/quint/issues/1034#issuecomment-1826894723
def variant(quintType: QuintType): Converter = {
val tlaType = typeConv.convert(quintType)
tlaType match {
From 8edf9f1c1bf07f25d9c92fcd0cb212900197b9f6 Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Wed, 29 Nov 2023 19:15:22 -0500
Subject: [PATCH 12/14] Revert "Update tictactoe.json fixture to use sum types"
This reverts commit fc88f061ebc76daee786bbfebb14398e68cc8db1.
We need to wait on updating this fixture until we have
https://github.com/informalsystems/quint/issues/1278 in place, so we can
generate the correct, flattened fixtures.
---
tla-io/src/test/resources/tictactoe.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tla-io/src/test/resources/tictactoe.json b/tla-io/src/test/resources/tictactoe.json
index d969e9b54c..e1f49677bd 100644
--- a/tla-io/src/test/resources/tictactoe.json
+++ b/tla-io/src/test/resources/tictactoe.json
@@ -1 +1 @@
-{"stage":"typechecking","warnings":[],"modules":[{"id":495,"name":"tictactoe","declarations":[{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]}},{"id":136,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":135,"kind":"app","opcode":"Set","args":[{"id":125,"kind":"app","opcode":"Tup","args":[{"id":123,"kind":"int","value":1},{"id":124,"kind":"int","value":1}]},{"id":128,"kind":"app","opcode":"Tup","args":[{"id":126,"kind":"int","value":3},{"id":127,"kind":"int","value":1}]},{"id":131,"kind":"app","opcode":"Tup","args":[{"id":129,"kind":"int","value":1},{"id":130,"kind":"int","value":3}]},{"id":134,"kind":"app","opcode":"Tup","args":[{"id":132,"kind":"int","value":3},{"id":133,"kind":"int","value":3}]}]}},{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]}},{"id":11,"kind":"def","name":"O","qualifier":"val","typeAnnotation":{"id":3,"kind":"const","name":"Player"},"expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]}},{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},{"id":7,"kind":"def","name":"X","qualifier":"val","typeAnnotation":{"id":3,"kind":"const","name":"Player"},"expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]}},{"id":20,"kind":"def","name":"Occupied","qualifier":"def","typeAnnotation":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":14,"kind":"const","name":"Square"}},"expr":{"id":19,"kind":"lambda","params":[{"id":16,"name":"__OccupiedParam"}],"qualifier":"def","expr":{"id":18,"kind":"app","opcode":"variant","args":[{"id":15,"kind":"str","value":"Occupied"},{"kind":"name","name":"__OccupiedParam","id":17}]}}},{"id":24,"kind":"def","name":"Empty","qualifier":"val","typeAnnotation":{"id":14,"kind":"const","name":"Square"},"expr":{"id":23,"kind":"app","opcode":"variant","args":[{"id":21,"kind":"str","value":"Empty"},{"id":22,"kind":"app","opcode":"Rec","args":[]}]}},{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},{"id":152,"kind":"def","name":"square","qualifier":"def","expr":{"id":152,"kind":"lambda","params":[{"id":137,"name":"coordinate"}],"qualifier":"def","expr":{"id":150,"kind":"app","opcode":"get","args":[{"id":146,"kind":"app","opcode":"get","args":[{"id":142,"kind":"name","name":"board"},{"id":145,"kind":"app","opcode":"item","args":[{"id":143,"kind":"name","name":"coordinate"},{"id":144,"kind":"int","value":1}]}]},{"id":149,"kind":"app","opcode":"item","args":[{"id":147,"kind":"name","name":"coordinate"},{"id":148,"kind":"int","value":2}]}]}},"typeAnnotation":{"id":151,"kind":"oper","args":[{"id":140,"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":138,"kind":"int"}},{"fieldName":"1","fieldType":{"id":139,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"id":141,"kind":"const","name":"Square"}}},{"id":465,"kind":"def","name":"init","qualifier":"action","expr":{"id":464,"kind":"app","opcode":"actionAll","args":[{"id":448,"kind":"app","opcode":"assign","args":[{"id":447,"kind":"name","name":"nextTurn"},{"id":446,"kind":"name","name":"X"}]},{"id":463,"kind":"app","opcode":"assign","args":[{"id":462,"kind":"name","name":"board"},{"id":461,"kind":"app","opcode":"mapBy","args":[{"id":451,"kind":"app","opcode":"to","args":[{"id":449,"kind":"int","value":1},{"id":450,"kind":"int","value":3}]},{"id":460,"kind":"lambda","params":[{"id":452,"name":"_"}],"qualifier":"def","expr":{"id":459,"kind":"app","opcode":"mapBy","args":[{"id":455,"kind":"app","opcode":"to","args":[{"id":453,"kind":"int","value":1},{"id":454,"kind":"int","value":3}]},{"id":458,"kind":"lambda","params":[{"id":456,"name":"_"}],"qualifier":"def","expr":{"id":457,"kind":"name","name":"Empty"}}]}}]}]}]}},{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}}},{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}}},{"id":185,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":184,"kind":"app","opcode":"forall","args":[{"id":182,"kind":"name","name":"boardCoordinates"},{"id":183,"kind":"name","name":"isEmpty"}]}},{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}}},{"id":203,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":202,"kind":"app","opcode":"not","args":[{"id":201,"kind":"app","opcode":"exists","args":[{"id":199,"kind":"name","name":"boardCoordinates"},{"id":200,"kind":"name","name":"isEmpty"}]}]}},{"id":243,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":243,"kind":"lambda","params":[{"id":222,"name":"pattern"}],"qualifier":"def","expr":{"id":242,"kind":"app","opcode":"and","args":[{"id":232,"kind":"app","opcode":"eq","args":[{"id":230,"kind":"app","opcode":"size","args":[{"id":229,"kind":"app","opcode":"filter","args":[{"id":223,"kind":"name","name":"pattern"},{"id":228,"kind":"lambda","params":[{"id":224,"name":"coordinate"}],"qualifier":"def","expr":{"id":227,"kind":"app","opcode":"hasPlayer","args":[{"id":225,"kind":"name","name":"coordinate"},{"id":226,"kind":"name","name":"X"}]}}]}]},{"id":231,"kind":"int","value":2}]},{"id":241,"kind":"app","opcode":"eq","args":[{"id":239,"kind":"app","opcode":"size","args":[{"id":238,"kind":"app","opcode":"filter","args":[{"id":233,"kind":"name","name":"pattern"},{"id":237,"kind":"lambda","params":[{"id":234,"name":"coordinate"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"isEmpty","args":[{"id":235,"kind":"name","name":"coordinate"}]}}]}]},{"id":240,"kind":"int","value":1}]}]}}},{"id":265,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":265,"kind":"lambda","params":[{"id":244,"name":"pattern"}],"qualifier":"def","expr":{"id":264,"kind":"app","opcode":"and","args":[{"id":254,"kind":"app","opcode":"eq","args":[{"id":252,"kind":"app","opcode":"size","args":[{"id":251,"kind":"app","opcode":"filter","args":[{"id":245,"kind":"name","name":"pattern"},{"id":250,"kind":"lambda","params":[{"id":246,"name":"coordinate"}],"qualifier":"def","expr":{"id":249,"kind":"app","opcode":"hasPlayer","args":[{"id":247,"kind":"name","name":"coordinate"},{"id":248,"kind":"name","name":"O"}]}}]}]},{"id":253,"kind":"int","value":2}]},{"id":263,"kind":"app","opcode":"eq","args":[{"id":261,"kind":"app","opcode":"size","args":[{"id":260,"kind":"app","opcode":"filter","args":[{"id":255,"kind":"name","name":"pattern"},{"id":259,"kind":"lambda","params":[{"id":256,"name":"coordinate"}],"qualifier":"def","expr":{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]}}]}]},{"id":262,"kind":"int","value":1}]}]}}},{"id":287,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":287,"kind":"lambda","params":[{"id":266,"name":"pattern"}],"qualifier":"def","expr":{"id":286,"kind":"app","opcode":"and","args":[{"id":276,"kind":"app","opcode":"eq","args":[{"id":274,"kind":"app","opcode":"size","args":[{"id":273,"kind":"app","opcode":"filter","args":[{"id":267,"kind":"name","name":"pattern"},{"id":272,"kind":"lambda","params":[{"id":268,"name":"coordinate"}],"qualifier":"def","expr":{"id":271,"kind":"app","opcode":"hasPlayer","args":[{"id":269,"kind":"name","name":"coordinate"},{"id":270,"kind":"name","name":"X"}]}}]}]},{"id":275,"kind":"int","value":1}]},{"id":285,"kind":"app","opcode":"eq","args":[{"id":283,"kind":"app","opcode":"size","args":[{"id":282,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"pattern"},{"id":281,"kind":"lambda","params":[{"id":278,"name":"coordinate"}],"qualifier":"def","expr":{"id":280,"kind":"app","opcode":"isEmpty","args":[{"id":279,"kind":"name","name":"coordinate"}]}}]}]},{"id":284,"kind":"int","value":2}]}]}}},{"id":300,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":299,"kind":"app","opcode":"isEmpty","args":[{"id":298,"kind":"app","opcode":"Tup","args":[{"id":296,"kind":"int","value":2},{"id":297,"kind":"int","value":2}]}]}},{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}}},{"id":213,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":212,"kind":"app","opcode":"and","args":[{"id":208,"kind":"app","opcode":"and","args":[{"id":204,"kind":"name","name":"boardFull"},{"id":207,"kind":"app","opcode":"not","args":[{"id":206,"kind":"app","opcode":"won","args":[{"id":205,"kind":"name","name":"X"}]}]}]},{"id":211,"kind":"app","opcode":"not","args":[{"id":210,"kind":"app","opcode":"won","args":[{"id":209,"kind":"name","name":"O"}]}]}]}},{"id":221,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":220,"kind":"app","opcode":"or","args":[{"id":218,"kind":"app","opcode":"or","args":[{"id":215,"kind":"app","opcode":"won","args":[{"id":214,"kind":"name","name":"X"}]},{"id":217,"kind":"app","opcode":"won","args":[{"id":216,"kind":"name","name":"O"}]}]},{"id":219,"kind":"name","name":"boardFull"}]}},{"id":291,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":290,"kind":"app","opcode":"exists","args":[{"id":288,"kind":"name","name":"winningPatterns"},{"id":289,"kind":"name","name":"canWinWithPattern"}]}},{"id":295,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":294,"kind":"app","opcode":"exists","args":[{"id":292,"kind":"name","name":"winningPatterns"},{"id":293,"kind":"name","name":"canBlockWithPattern"}]}},{"id":304,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":303,"kind":"app","opcode":"exists","args":[{"id":301,"kind":"name","name":"winningPatterns"},{"id":302,"kind":"name","name":"canSetupWinWithPattern"}]}},{"id":368,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":367,"kind":"app","opcode":"Move","args":[{"id":363,"kind":"name","name":"X"},{"id":366,"kind":"app","opcode":"Tup","args":[{"id":364,"kind":"int","value":2},{"id":365,"kind":"int","value":2}]}]}},{"id":396,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":396,"kind":"lambda","params":[{"id":386,"name":"player"}],"qualifier":"action","expr":{"id":395,"kind":"let","opdef":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":394,"kind":"app","opcode":"Move","args":[{"id":392,"kind":"name","name":"player"},{"id":393,"kind":"name","name":"coordinate"}]}}}},{"id":404,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":403,"kind":"let","opdef":{"id":399,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":398,"kind":"app","opcode":"oneOf","args":[{"id":397,"kind":"name","name":"corners"}]}},"expr":{"id":402,"kind":"app","opcode":"Move","args":[{"id":400,"kind":"name","name":"X"},{"id":401,"kind":"name","name":"corner"}]}}},{"doc":"X has not won. This does not hold, as X wins most of the times.","id":481,"kind":"def","name":"XHasNotWon","qualifier":"val","expr":{"id":480,"kind":"app","opcode":"not","args":[{"id":479,"kind":"app","opcode":"won","args":[{"id":478,"kind":"name","name":"X"}]}]}},{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":485,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":484,"kind":"app","opcode":"not","args":[{"id":483,"kind":"app","opcode":"won","args":[{"id":482,"kind":"name","name":"O"}]}]}},{"doc":"This is not always true, as if O picks the right moves, the game will\nresult in a stalemate.","id":494,"kind":"def","name":"XMustEventuallyWin","qualifier":"temporal","expr":{"id":493,"kind":"app","opcode":"eventually","args":[{"id":492,"kind":"app","opcode":"won","args":[{"id":491,"kind":"name","name":"X"}]}]}},{"id":445,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":444,"kind":"app","opcode":"actionAll","args":[{"id":435,"kind":"app","opcode":"eq","args":[{"id":433,"kind":"name","name":"nextTurn"},{"id":434,"kind":"name","name":"O"}]},{"id":438,"kind":"app","opcode":"not","args":[{"id":437,"kind":"app","opcode":"won","args":[{"id":436,"kind":"name","name":"X"}]}]},{"id":440,"kind":"app","opcode":"MoveToEmpty","args":[{"id":439,"kind":"name","name":"O"}]},{"id":443,"kind":"app","opcode":"assign","args":[{"id":442,"kind":"name","name":"nextTurn"},{"id":441,"kind":"name","name":"X"}]}]}},{"doc":"It's not a stalemate if one player has won or the board is not filled\nCheck with `quint run --invariant=NotStalemate tictactoe.qnt`","id":488,"kind":"def","name":"NotStalemate","qualifier":"val","expr":{"id":487,"kind":"app","opcode":"not","args":[{"id":486,"kind":"name","name":"stalemate"}]}},{"doc":"OHasNotWon is our default invariant for running the simulator/verifier\nas it is the only invariant that holds. Check `NotStalemate` for an\ninteresting counterexample.","id":490,"kind":"def","name":"inv","qualifier":"val","expr":{"id":489,"kind":"name","name":"OHasNotWon"}},{"id":344,"kind":"def","name":"Win","qualifier":"action","expr":{"id":343,"kind":"app","opcode":"actionAll","args":[{"id":327,"kind":"name","name":"canWin"},{"id":342,"kind":"let","opdef":{"id":332,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":331,"kind":"app","opcode":"oneOf","args":[{"id":330,"kind":"app","opcode":"filter","args":[{"id":328,"kind":"name","name":"winningPatterns"},{"id":329,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":341,"kind":"let","opdef":{"id":337,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":336,"kind":"app","opcode":"oneOf","args":[{"id":335,"kind":"app","opcode":"filter","args":[{"id":333,"kind":"name","name":"pattern"},{"id":334,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":340,"kind":"app","opcode":"Move","args":[{"id":338,"kind":"name","name":"X"},{"id":339,"kind":"name","name":"coordinate"}]}}}]}},{"id":362,"kind":"def","name":"Block","qualifier":"action","expr":{"id":361,"kind":"app","opcode":"actionAll","args":[{"id":345,"kind":"name","name":"canBlock"},{"id":360,"kind":"let","opdef":{"id":350,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":349,"kind":"app","opcode":"oneOf","args":[{"id":348,"kind":"app","opcode":"filter","args":[{"id":346,"kind":"name","name":"winningPatterns"},{"id":347,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":359,"kind":"let","opdef":{"id":355,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":354,"kind":"app","opcode":"oneOf","args":[{"id":353,"kind":"app","opcode":"filter","args":[{"id":351,"kind":"name","name":"pattern"},{"id":352,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":358,"kind":"app","opcode":"Move","args":[{"id":356,"kind":"name","name":"X"},{"id":357,"kind":"name","name":"coordinate"}]}}}]}},{"id":385,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":384,"kind":"app","opcode":"actionAll","args":[{"id":383,"kind":"let","opdef":{"id":373,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":372,"kind":"app","opcode":"oneOf","args":[{"id":371,"kind":"app","opcode":"filter","args":[{"id":369,"kind":"name","name":"winningPatterns"},{"id":370,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":382,"kind":"let","opdef":{"id":378,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":377,"kind":"app","opcode":"oneOf","args":[{"id":376,"kind":"app","opcode":"filter","args":[{"id":374,"kind":"name","name":"pattern"},{"id":375,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":381,"kind":"app","opcode":"Move","args":[{"id":379,"kind":"name","name":"X"},{"id":380,"kind":"name","name":"coordinate"}]}}}]}},{"id":432,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":431,"kind":"app","opcode":"actionAll","args":[{"id":407,"kind":"app","opcode":"eq","args":[{"id":405,"kind":"name","name":"nextTurn"},{"id":406,"kind":"name","name":"X"}]},{"id":410,"kind":"app","opcode":"not","args":[{"id":409,"kind":"app","opcode":"won","args":[{"id":408,"kind":"name","name":"O"}]}]},{"id":427,"kind":"app","opcode":"ite","args":[{"id":411,"kind":"name","name":"boardEmpty"},{"id":412,"kind":"name","name":"StartInCorner"},{"id":426,"kind":"app","opcode":"ite","args":[{"id":413,"kind":"name","name":"canWin"},{"id":414,"kind":"name","name":"Win"},{"id":425,"kind":"app","opcode":"ite","args":[{"id":415,"kind":"name","name":"canBlock"},{"id":416,"kind":"name","name":"Block"},{"id":424,"kind":"app","opcode":"ite","args":[{"id":417,"kind":"name","name":"canTakeCenter"},{"id":418,"kind":"name","name":"TakeCenter"},{"id":423,"kind":"app","opcode":"ite","args":[{"id":419,"kind":"name","name":"canSetupWin"},{"id":420,"kind":"name","name":"SetupWin"},{"id":422,"kind":"app","opcode":"MoveToEmpty","args":[{"id":421,"kind":"name","name":"X"}]}]}]}]}]}]},{"id":430,"kind":"app","opcode":"assign","args":[{"id":429,"kind":"name","name":"nextTurn"},{"id":428,"kind":"name","name":"O"}]}]}},{"doc":"Either X or O will make a move, depending on the value of `nextTurn`","id":477,"kind":"def","name":"step","qualifier":"action","expr":{"id":476,"kind":"app","opcode":"actionAny","args":[{"id":466,"kind":"name","name":"MoveX"},{"id":467,"kind":"name","name":"MoveO"},{"id":475,"kind":"app","opcode":"actionAll","args":[{"id":468,"kind":"name","name":"gameOver"},{"id":471,"kind":"app","opcode":"assign","args":[{"id":470,"kind":"name","name":"board"},{"id":469,"kind":"name","name":"board"}]},{"id":474,"kind":"app","opcode":"assign","args":[{"id":473,"kind":"name","name":"nextTurn"},{"id":472,"kind":"name","name":"nextTurn"}]}]}]}}]}],"table":{"3":{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"12":{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"14":{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"17":{"id":16,"name":"__OccupiedParam","kind":"param"},"27":{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"31":{"id":3,"name":"Player","kind":"typedef","type":{"id":3,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}},{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"141":{"id":14,"name":"Square","kind":"typedef","type":{"id":14,"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}},{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"142":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"143":{"id":137,"name":"coordinate","kind":"param"},"147":{"id":137,"name":"coordinate","kind":"param"},"155":{"id":153,"name":"coordinate","kind":"param"},"156":{"id":152,"kind":"def","name":"square","qualifier":"def","expr":{"id":152,"kind":"lambda","params":[{"id":137,"name":"coordinate"}],"qualifier":"def","expr":{"id":150,"kind":"app","opcode":"get","args":[{"id":146,"kind":"app","opcode":"get","args":[{"id":142,"kind":"name","name":"board"},{"id":145,"kind":"app","opcode":"item","args":[{"id":143,"kind":"name","name":"coordinate"},{"id":144,"kind":"int","value":1}]}]},{"id":149,"kind":"app","opcode":"item","args":[{"id":147,"kind":"name","name":"coordinate"},{"id":148,"kind":"int","value":2}]}]}},"depth":0},"158":{"id":154,"name":"player","kind":"param"},"159":{"name":"p","id":167,"kind":"param"},"170":{"id":169,"name":"coordinate","kind":"param"},"171":{"id":152,"kind":"def","name":"square","qualifier":"def","expr":{"id":152,"kind":"lambda","params":[{"id":137,"name":"coordinate"}],"qualifier":"def","expr":{"id":150,"kind":"app","opcode":"get","args":[{"id":146,"kind":"app","opcode":"get","args":[{"id":142,"kind":"name","name":"board"},{"id":145,"kind":"app","opcode":"item","args":[{"id":143,"kind":"name","name":"coordinate"},{"id":144,"kind":"int","value":1}]}]},{"id":149,"kind":"app","opcode":"item","args":[{"id":147,"kind":"name","name":"coordinate"},{"id":148,"kind":"int","value":2}]}]}},"depth":0},"182":{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]},"depth":0},"183":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"187":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"189":{"id":188,"name":"pattern","kind":"param"},"191":{"id":190,"name":"coordinate","kind":"param"},"192":{"id":186,"name":"player","kind":"param"},"193":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"199":{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]},"depth":0},"200":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"204":{"id":203,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":202,"kind":"app","opcode":"not","args":[{"id":201,"kind":"app","opcode":"exists","args":[{"id":199,"kind":"name","name":"boardCoordinates"},{"id":200,"kind":"name","name":"isEmpty"}]}]},"depth":0},"205":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"206":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"209":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"210":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"214":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"215":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"216":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"217":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"219":{"id":203,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":202,"kind":"app","opcode":"not","args":[{"id":201,"kind":"app","opcode":"exists","args":[{"id":199,"kind":"name","name":"boardCoordinates"},{"id":200,"kind":"name","name":"isEmpty"}]}]},"depth":0},"223":{"id":222,"name":"pattern","kind":"param"},"225":{"id":224,"name":"coordinate","kind":"param"},"226":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"227":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"233":{"id":222,"name":"pattern","kind":"param"},"235":{"id":234,"name":"coordinate","kind":"param"},"236":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"245":{"id":244,"name":"pattern","kind":"param"},"247":{"id":246,"name":"coordinate","kind":"param"},"248":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"249":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"255":{"id":244,"name":"pattern","kind":"param"},"257":{"id":256,"name":"coordinate","kind":"param"},"258":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"267":{"id":266,"name":"pattern","kind":"param"},"269":{"id":268,"name":"coordinate","kind":"param"},"270":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"271":{"id":168,"kind":"def","name":"hasPlayer","qualifier":"def","expr":{"id":168,"kind":"lambda","params":[{"id":153,"name":"coordinate"},{"id":154,"name":"player"}],"qualifier":"def","expr":{"id":161,"kind":"app","opcode":"matchVariant","args":[{"id":156,"kind":"app","opcode":"square","args":[{"id":155,"kind":"name","name":"coordinate"}]},{"id":162,"kind":"str","value":"Empty"},{"id":163,"kind":"lambda","qualifier":"def","expr":{"id":157,"kind":"bool","value":false},"params":[{"name":"_","id":164}]},{"id":165,"kind":"str","value":"Occupied"},{"id":166,"kind":"lambda","qualifier":"def","expr":{"id":160,"kind":"app","opcode":"eq","args":[{"id":158,"kind":"name","name":"player"},{"id":159,"kind":"name","name":"p"}]},"params":[{"name":"p","id":167}]}]}},"depth":0},"277":{"id":266,"name":"pattern","kind":"param"},"279":{"id":278,"name":"coordinate","kind":"param"},"280":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"288":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"289":{"id":243,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":243,"kind":"lambda","params":[{"id":222,"name":"pattern"}],"qualifier":"def","expr":{"id":242,"kind":"app","opcode":"and","args":[{"id":232,"kind":"app","opcode":"eq","args":[{"id":230,"kind":"app","opcode":"size","args":[{"id":229,"kind":"app","opcode":"filter","args":[{"id":223,"kind":"name","name":"pattern"},{"id":228,"kind":"lambda","params":[{"id":224,"name":"coordinate"}],"qualifier":"def","expr":{"id":227,"kind":"app","opcode":"hasPlayer","args":[{"id":225,"kind":"name","name":"coordinate"},{"id":226,"kind":"name","name":"X"}]}}]}]},{"id":231,"kind":"int","value":2}]},{"id":241,"kind":"app","opcode":"eq","args":[{"id":239,"kind":"app","opcode":"size","args":[{"id":238,"kind":"app","opcode":"filter","args":[{"id":233,"kind":"name","name":"pattern"},{"id":237,"kind":"lambda","params":[{"id":234,"name":"coordinate"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"isEmpty","args":[{"id":235,"kind":"name","name":"coordinate"}]}}]}]},{"id":240,"kind":"int","value":1}]}]}},"depth":0},"292":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"293":{"id":265,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":265,"kind":"lambda","params":[{"id":244,"name":"pattern"}],"qualifier":"def","expr":{"id":264,"kind":"app","opcode":"and","args":[{"id":254,"kind":"app","opcode":"eq","args":[{"id":252,"kind":"app","opcode":"size","args":[{"id":251,"kind":"app","opcode":"filter","args":[{"id":245,"kind":"name","name":"pattern"},{"id":250,"kind":"lambda","params":[{"id":246,"name":"coordinate"}],"qualifier":"def","expr":{"id":249,"kind":"app","opcode":"hasPlayer","args":[{"id":247,"kind":"name","name":"coordinate"},{"id":248,"kind":"name","name":"O"}]}}]}]},{"id":253,"kind":"int","value":2}]},{"id":263,"kind":"app","opcode":"eq","args":[{"id":261,"kind":"app","opcode":"size","args":[{"id":260,"kind":"app","opcode":"filter","args":[{"id":255,"kind":"name","name":"pattern"},{"id":259,"kind":"lambda","params":[{"id":256,"name":"coordinate"}],"qualifier":"def","expr":{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]}}]}]},{"id":262,"kind":"int","value":1}]}]}},"depth":0},"299":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"301":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"302":{"id":287,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":287,"kind":"lambda","params":[{"id":266,"name":"pattern"}],"qualifier":"def","expr":{"id":286,"kind":"app","opcode":"and","args":[{"id":276,"kind":"app","opcode":"eq","args":[{"id":274,"kind":"app","opcode":"size","args":[{"id":273,"kind":"app","opcode":"filter","args":[{"id":267,"kind":"name","name":"pattern"},{"id":272,"kind":"lambda","params":[{"id":268,"name":"coordinate"}],"qualifier":"def","expr":{"id":271,"kind":"app","opcode":"hasPlayer","args":[{"id":269,"kind":"name","name":"coordinate"},{"id":270,"kind":"name","name":"X"}]}}]}]},{"id":275,"kind":"int","value":1}]},{"id":285,"kind":"app","opcode":"eq","args":[{"id":283,"kind":"app","opcode":"size","args":[{"id":282,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"pattern"},{"id":281,"kind":"lambda","params":[{"id":278,"name":"coordinate"}],"qualifier":"def","expr":{"id":280,"kind":"app","opcode":"isEmpty","args":[{"id":279,"kind":"name","name":"coordinate"}]}}]}]},{"id":284,"kind":"int","value":2}]}]}},"depth":0},"307":{"id":306,"name":"coordinate","kind":"param"},"308":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"309":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"310":{"id":306,"name":"coordinate","kind":"param"},"314":{"id":313,"name":"row","kind":"param"},"315":{"id":306,"name":"coordinate","kind":"param"},"318":{"id":305,"name":"player","kind":"param"},"319":{"id":20,"kind":"def","name":"Occupied","qualifier":"def","expr":{"id":19,"kind":"lambda","params":[{"id":16,"name":"__OccupiedParam"}],"qualifier":"def","expr":{"id":18,"kind":"app","opcode":"variant","args":[{"id":15,"kind":"str","value":"Occupied"},{"kind":"name","name":"__OccupiedParam","id":17}]}},"depth":0},"323":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"327":{"id":291,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":290,"kind":"app","opcode":"exists","args":[{"id":288,"kind":"name","name":"winningPatterns"},{"id":289,"kind":"name","name":"canWinWithPattern"}]},"depth":0},"328":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"329":{"id":243,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":243,"kind":"lambda","params":[{"id":222,"name":"pattern"}],"qualifier":"def","expr":{"id":242,"kind":"app","opcode":"and","args":[{"id":232,"kind":"app","opcode":"eq","args":[{"id":230,"kind":"app","opcode":"size","args":[{"id":229,"kind":"app","opcode":"filter","args":[{"id":223,"kind":"name","name":"pattern"},{"id":228,"kind":"lambda","params":[{"id":224,"name":"coordinate"}],"qualifier":"def","expr":{"id":227,"kind":"app","opcode":"hasPlayer","args":[{"id":225,"kind":"name","name":"coordinate"},{"id":226,"kind":"name","name":"X"}]}}]}]},{"id":231,"kind":"int","value":2}]},{"id":241,"kind":"app","opcode":"eq","args":[{"id":239,"kind":"app","opcode":"size","args":[{"id":238,"kind":"app","opcode":"filter","args":[{"id":233,"kind":"name","name":"pattern"},{"id":237,"kind":"lambda","params":[{"id":234,"name":"coordinate"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"isEmpty","args":[{"id":235,"kind":"name","name":"coordinate"}]}}]}]},{"id":240,"kind":"int","value":1}]}]}},"depth":0},"333":{"id":332,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":331,"kind":"app","opcode":"oneOf","args":[{"id":330,"kind":"app","opcode":"filter","args":[{"id":328,"kind":"name","name":"winningPatterns"},{"id":329,"kind":"name","name":"canWinWithPattern"}]}]},"depth":1},"334":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"338":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"339":{"id":337,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":336,"kind":"app","opcode":"oneOf","args":[{"id":335,"kind":"app","opcode":"filter","args":[{"id":333,"kind":"name","name":"pattern"},{"id":334,"kind":"name","name":"isEmpty"}]}]},"depth":1},"340":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"345":{"id":295,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":294,"kind":"app","opcode":"exists","args":[{"id":292,"kind":"name","name":"winningPatterns"},{"id":293,"kind":"name","name":"canBlockWithPattern"}]},"depth":0},"346":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"347":{"id":265,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":265,"kind":"lambda","params":[{"id":244,"name":"pattern"}],"qualifier":"def","expr":{"id":264,"kind":"app","opcode":"and","args":[{"id":254,"kind":"app","opcode":"eq","args":[{"id":252,"kind":"app","opcode":"size","args":[{"id":251,"kind":"app","opcode":"filter","args":[{"id":245,"kind":"name","name":"pattern"},{"id":250,"kind":"lambda","params":[{"id":246,"name":"coordinate"}],"qualifier":"def","expr":{"id":249,"kind":"app","opcode":"hasPlayer","args":[{"id":247,"kind":"name","name":"coordinate"},{"id":248,"kind":"name","name":"O"}]}}]}]},{"id":253,"kind":"int","value":2}]},{"id":263,"kind":"app","opcode":"eq","args":[{"id":261,"kind":"app","opcode":"size","args":[{"id":260,"kind":"app","opcode":"filter","args":[{"id":255,"kind":"name","name":"pattern"},{"id":259,"kind":"lambda","params":[{"id":256,"name":"coordinate"}],"qualifier":"def","expr":{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]}}]}]},{"id":262,"kind":"int","value":1}]}]}},"depth":0},"351":{"id":350,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":349,"kind":"app","opcode":"oneOf","args":[{"id":348,"kind":"app","opcode":"filter","args":[{"id":346,"kind":"name","name":"winningPatterns"},{"id":347,"kind":"name","name":"canBlockWithPattern"}]}]},"depth":1},"352":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"356":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"357":{"id":355,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":354,"kind":"app","opcode":"oneOf","args":[{"id":353,"kind":"app","opcode":"filter","args":[{"id":351,"kind":"name","name":"pattern"},{"id":352,"kind":"name","name":"isEmpty"}]}]},"depth":1},"358":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"363":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"367":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"369":{"id":122,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":121,"kind":"app","opcode":"Set","args":[{"id":50,"kind":"app","opcode":"Set","args":[{"id":43,"kind":"app","opcode":"Tup","args":[{"id":41,"kind":"int","value":1},{"id":42,"kind":"int","value":1}]},{"id":46,"kind":"app","opcode":"Tup","args":[{"id":44,"kind":"int","value":1},{"id":45,"kind":"int","value":2}]},{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":3}]}]},{"id":60,"kind":"app","opcode":"Set","args":[{"id":53,"kind":"app","opcode":"Tup","args":[{"id":51,"kind":"int","value":2},{"id":52,"kind":"int","value":1}]},{"id":56,"kind":"app","opcode":"Tup","args":[{"id":54,"kind":"int","value":2},{"id":55,"kind":"int","value":2}]},{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":2},{"id":58,"kind":"int","value":3}]}]},{"id":70,"kind":"app","opcode":"Set","args":[{"id":63,"kind":"app","opcode":"Tup","args":[{"id":61,"kind":"int","value":3},{"id":62,"kind":"int","value":1}]},{"id":66,"kind":"app","opcode":"Tup","args":[{"id":64,"kind":"int","value":3},{"id":65,"kind":"int","value":2}]},{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":3},{"id":68,"kind":"int","value":3}]}]},{"id":80,"kind":"app","opcode":"Set","args":[{"id":73,"kind":"app","opcode":"Tup","args":[{"id":71,"kind":"int","value":1},{"id":72,"kind":"int","value":1}]},{"id":76,"kind":"app","opcode":"Tup","args":[{"id":74,"kind":"int","value":2},{"id":75,"kind":"int","value":1}]},{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":3},{"id":78,"kind":"int","value":1}]}]},{"id":90,"kind":"app","opcode":"Set","args":[{"id":83,"kind":"app","opcode":"Tup","args":[{"id":81,"kind":"int","value":1},{"id":82,"kind":"int","value":2}]},{"id":86,"kind":"app","opcode":"Tup","args":[{"id":84,"kind":"int","value":2},{"id":85,"kind":"int","value":2}]},{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":2}]}]},{"id":100,"kind":"app","opcode":"Set","args":[{"id":93,"kind":"app","opcode":"Tup","args":[{"id":91,"kind":"int","value":1},{"id":92,"kind":"int","value":3}]},{"id":96,"kind":"app","opcode":"Tup","args":[{"id":94,"kind":"int","value":2},{"id":95,"kind":"int","value":3}]},{"id":99,"kind":"app","opcode":"Tup","args":[{"id":97,"kind":"int","value":3},{"id":98,"kind":"int","value":3}]}]},{"id":110,"kind":"app","opcode":"Set","args":[{"id":103,"kind":"app","opcode":"Tup","args":[{"id":101,"kind":"int","value":1},{"id":102,"kind":"int","value":1}]},{"id":106,"kind":"app","opcode":"Tup","args":[{"id":104,"kind":"int","value":2},{"id":105,"kind":"int","value":2}]},{"id":109,"kind":"app","opcode":"Tup","args":[{"id":107,"kind":"int","value":3},{"id":108,"kind":"int","value":3}]}]},{"id":120,"kind":"app","opcode":"Set","args":[{"id":113,"kind":"app","opcode":"Tup","args":[{"id":111,"kind":"int","value":3},{"id":112,"kind":"int","value":1}]},{"id":116,"kind":"app","opcode":"Tup","args":[{"id":114,"kind":"int","value":2},{"id":115,"kind":"int","value":2}]},{"id":119,"kind":"app","opcode":"Tup","args":[{"id":117,"kind":"int","value":1},{"id":118,"kind":"int","value":3}]}]}]},"depth":0},"370":{"id":287,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":287,"kind":"lambda","params":[{"id":266,"name":"pattern"}],"qualifier":"def","expr":{"id":286,"kind":"app","opcode":"and","args":[{"id":276,"kind":"app","opcode":"eq","args":[{"id":274,"kind":"app","opcode":"size","args":[{"id":273,"kind":"app","opcode":"filter","args":[{"id":267,"kind":"name","name":"pattern"},{"id":272,"kind":"lambda","params":[{"id":268,"name":"coordinate"}],"qualifier":"def","expr":{"id":271,"kind":"app","opcode":"hasPlayer","args":[{"id":269,"kind":"name","name":"coordinate"},{"id":270,"kind":"name","name":"X"}]}}]}]},{"id":275,"kind":"int","value":1}]},{"id":285,"kind":"app","opcode":"eq","args":[{"id":283,"kind":"app","opcode":"size","args":[{"id":282,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"pattern"},{"id":281,"kind":"lambda","params":[{"id":278,"name":"coordinate"}],"qualifier":"def","expr":{"id":280,"kind":"app","opcode":"isEmpty","args":[{"id":279,"kind":"name","name":"coordinate"}]}}]}]},{"id":284,"kind":"int","value":2}]}]}},"depth":0},"374":{"id":373,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":372,"kind":"app","opcode":"oneOf","args":[{"id":371,"kind":"app","opcode":"filter","args":[{"id":369,"kind":"name","name":"winningPatterns"},{"id":370,"kind":"name","name":"canSetupWinWithPattern"}]}]},"depth":1},"375":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"379":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"380":{"id":378,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":377,"kind":"app","opcode":"oneOf","args":[{"id":376,"kind":"app","opcode":"filter","args":[{"id":374,"kind":"name","name":"pattern"},{"id":375,"kind":"name","name":"isEmpty"}]}]},"depth":1},"381":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"387":{"id":40,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":39,"kind":"app","opcode":"tuples","args":[{"id":35,"kind":"app","opcode":"to","args":[{"id":33,"kind":"int","value":1},{"id":34,"kind":"int","value":3}]},{"id":38,"kind":"app","opcode":"to","args":[{"id":36,"kind":"int","value":1},{"id":37,"kind":"int","value":3}]}]},"depth":0},"388":{"id":181,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":181,"kind":"lambda","params":[{"id":169,"name":"coordinate"}],"qualifier":"def","expr":{"id":174,"kind":"app","opcode":"matchVariant","args":[{"id":171,"kind":"app","opcode":"square","args":[{"id":170,"kind":"name","name":"coordinate"}]},{"id":175,"kind":"str","value":"Empty"},{"id":176,"kind":"lambda","qualifier":"def","expr":{"id":172,"kind":"bool","value":true},"params":[{"name":"_","id":177}]},{"id":178,"kind":"str","value":"Occupied"},{"id":179,"kind":"lambda","qualifier":"def","expr":{"id":173,"kind":"bool","value":false},"params":[{"name":"_","id":180}]}]}},"depth":0},"392":{"id":386,"name":"player","kind":"param"},"393":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]},"depth":1},"394":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"397":{"id":136,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":135,"kind":"app","opcode":"Set","args":[{"id":125,"kind":"app","opcode":"Tup","args":[{"id":123,"kind":"int","value":1},{"id":124,"kind":"int","value":1}]},{"id":128,"kind":"app","opcode":"Tup","args":[{"id":126,"kind":"int","value":3},{"id":127,"kind":"int","value":1}]},{"id":131,"kind":"app","opcode":"Tup","args":[{"id":129,"kind":"int","value":1},{"id":130,"kind":"int","value":3}]},{"id":134,"kind":"app","opcode":"Tup","args":[{"id":132,"kind":"int","value":3},{"id":133,"kind":"int","value":3}]}]},"depth":0},"400":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"401":{"id":399,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":398,"kind":"app","opcode":"oneOf","args":[{"id":397,"kind":"name","name":"corners"}]},"depth":1},"402":{"id":326,"kind":"def","name":"Move","qualifier":"action","expr":{"id":326,"kind":"lambda","params":[{"id":305,"name":"player"},{"id":306,"name":"coordinate"}],"qualifier":"action","expr":{"id":325,"kind":"app","opcode":"actionAll","args":[{"id":308,"kind":"app","opcode":"isEmpty","args":[{"id":307,"kind":"name","name":"coordinate"}]},{"id":324,"kind":"app","opcode":"assign","args":[{"id":323,"kind":"name","name":"board"},{"id":322,"kind":"app","opcode":"setBy","args":[{"id":309,"kind":"name","name":"board"},{"id":312,"kind":"app","opcode":"item","args":[{"id":310,"kind":"name","name":"coordinate"},{"id":311,"kind":"int","value":1}]},{"id":321,"kind":"lambda","params":[{"id":313,"name":"row"}],"qualifier":"def","expr":{"id":320,"kind":"app","opcode":"set","args":[{"id":314,"kind":"name","name":"row"},{"id":317,"kind":"app","opcode":"item","args":[{"id":315,"kind":"name","name":"coordinate"},{"id":316,"kind":"int","value":2}]},{"id":319,"kind":"app","opcode":"Occupied","args":[{"id":318,"kind":"name","name":"player"}]}]}}]}]}]}},"depth":0},"405":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"406":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"408":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"409":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"411":{"id":185,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":184,"kind":"app","opcode":"forall","args":[{"id":182,"kind":"name","name":"boardCoordinates"},{"id":183,"kind":"name","name":"isEmpty"}]},"depth":0},"412":{"id":404,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":403,"kind":"let","opdef":{"id":399,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":398,"kind":"app","opcode":"oneOf","args":[{"id":397,"kind":"name","name":"corners"}]}},"expr":{"id":402,"kind":"app","opcode":"Move","args":[{"id":400,"kind":"name","name":"X"},{"id":401,"kind":"name","name":"corner"}]}},"depth":0},"413":{"id":291,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":290,"kind":"app","opcode":"exists","args":[{"id":288,"kind":"name","name":"winningPatterns"},{"id":289,"kind":"name","name":"canWinWithPattern"}]},"depth":0},"414":{"id":344,"kind":"def","name":"Win","qualifier":"action","expr":{"id":343,"kind":"app","opcode":"actionAll","args":[{"id":327,"kind":"name","name":"canWin"},{"id":342,"kind":"let","opdef":{"id":332,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":331,"kind":"app","opcode":"oneOf","args":[{"id":330,"kind":"app","opcode":"filter","args":[{"id":328,"kind":"name","name":"winningPatterns"},{"id":329,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":341,"kind":"let","opdef":{"id":337,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":336,"kind":"app","opcode":"oneOf","args":[{"id":335,"kind":"app","opcode":"filter","args":[{"id":333,"kind":"name","name":"pattern"},{"id":334,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":340,"kind":"app","opcode":"Move","args":[{"id":338,"kind":"name","name":"X"},{"id":339,"kind":"name","name":"coordinate"}]}}}]},"depth":0},"415":{"id":295,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":294,"kind":"app","opcode":"exists","args":[{"id":292,"kind":"name","name":"winningPatterns"},{"id":293,"kind":"name","name":"canBlockWithPattern"}]},"depth":0},"416":{"id":362,"kind":"def","name":"Block","qualifier":"action","expr":{"id":361,"kind":"app","opcode":"actionAll","args":[{"id":345,"kind":"name","name":"canBlock"},{"id":360,"kind":"let","opdef":{"id":350,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":349,"kind":"app","opcode":"oneOf","args":[{"id":348,"kind":"app","opcode":"filter","args":[{"id":346,"kind":"name","name":"winningPatterns"},{"id":347,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":359,"kind":"let","opdef":{"id":355,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":354,"kind":"app","opcode":"oneOf","args":[{"id":353,"kind":"app","opcode":"filter","args":[{"id":351,"kind":"name","name":"pattern"},{"id":352,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":358,"kind":"app","opcode":"Move","args":[{"id":356,"kind":"name","name":"X"},{"id":357,"kind":"name","name":"coordinate"}]}}}]},"depth":0},"417":{"id":300,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":299,"kind":"app","opcode":"isEmpty","args":[{"id":298,"kind":"app","opcode":"Tup","args":[{"id":296,"kind":"int","value":2},{"id":297,"kind":"int","value":2}]}]},"depth":0},"418":{"id":368,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":367,"kind":"app","opcode":"Move","args":[{"id":363,"kind":"name","name":"X"},{"id":366,"kind":"app","opcode":"Tup","args":[{"id":364,"kind":"int","value":2},{"id":365,"kind":"int","value":2}]}]},"depth":0},"419":{"id":304,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":303,"kind":"app","opcode":"exists","args":[{"id":301,"kind":"name","name":"winningPatterns"},{"id":302,"kind":"name","name":"canSetupWinWithPattern"}]},"depth":0},"420":{"id":385,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":384,"kind":"app","opcode":"actionAll","args":[{"id":383,"kind":"let","opdef":{"id":373,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":372,"kind":"app","opcode":"oneOf","args":[{"id":371,"kind":"app","opcode":"filter","args":[{"id":369,"kind":"name","name":"winningPatterns"},{"id":370,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":382,"kind":"let","opdef":{"id":378,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":377,"kind":"app","opcode":"oneOf","args":[{"id":376,"kind":"app","opcode":"filter","args":[{"id":374,"kind":"name","name":"pattern"},{"id":375,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":381,"kind":"app","opcode":"Move","args":[{"id":379,"kind":"name","name":"X"},{"id":380,"kind":"name","name":"coordinate"}]}}}]},"depth":0},"421":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"422":{"id":396,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":396,"kind":"lambda","params":[{"id":386,"name":"player"}],"qualifier":"action","expr":{"id":395,"kind":"let","opdef":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":394,"kind":"app","opcode":"Move","args":[{"id":392,"kind":"name","name":"player"},{"id":393,"kind":"name","name":"coordinate"}]}}},"depth":0},"428":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"429":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"433":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"434":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"436":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"437":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"439":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"440":{"id":396,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":396,"kind":"lambda","params":[{"id":386,"name":"player"}],"qualifier":"action","expr":{"id":395,"kind":"let","opdef":{"id":391,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":390,"kind":"app","opcode":"oneOf","args":[{"id":389,"kind":"app","opcode":"filter","args":[{"id":387,"kind":"name","name":"boardCoordinates"},{"id":388,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":394,"kind":"app","opcode":"Move","args":[{"id":392,"kind":"name","name":"player"},{"id":393,"kind":"name","name":"coordinate"}]}}},"depth":0},"441":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"442":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"446":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"447":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"457":{"id":24,"kind":"def","name":"Empty","qualifier":"val","expr":{"id":23,"kind":"app","opcode":"variant","args":[{"id":21,"kind":"str","value":"Empty"},{"id":22,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"462":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"466":{"id":432,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":431,"kind":"app","opcode":"actionAll","args":[{"id":407,"kind":"app","opcode":"eq","args":[{"id":405,"kind":"name","name":"nextTurn"},{"id":406,"kind":"name","name":"X"}]},{"id":410,"kind":"app","opcode":"not","args":[{"id":409,"kind":"app","opcode":"won","args":[{"id":408,"kind":"name","name":"O"}]}]},{"id":427,"kind":"app","opcode":"ite","args":[{"id":411,"kind":"name","name":"boardEmpty"},{"id":412,"kind":"name","name":"StartInCorner"},{"id":426,"kind":"app","opcode":"ite","args":[{"id":413,"kind":"name","name":"canWin"},{"id":414,"kind":"name","name":"Win"},{"id":425,"kind":"app","opcode":"ite","args":[{"id":415,"kind":"name","name":"canBlock"},{"id":416,"kind":"name","name":"Block"},{"id":424,"kind":"app","opcode":"ite","args":[{"id":417,"kind":"name","name":"canTakeCenter"},{"id":418,"kind":"name","name":"TakeCenter"},{"id":423,"kind":"app","opcode":"ite","args":[{"id":419,"kind":"name","name":"canSetupWin"},{"id":420,"kind":"name","name":"SetupWin"},{"id":422,"kind":"app","opcode":"MoveToEmpty","args":[{"id":421,"kind":"name","name":"X"}]}]}]}]}]}]},{"id":430,"kind":"app","opcode":"assign","args":[{"id":429,"kind":"name","name":"nextTurn"},{"id":428,"kind":"name","name":"O"}]}]},"depth":0},"467":{"id":445,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":444,"kind":"app","opcode":"actionAll","args":[{"id":435,"kind":"app","opcode":"eq","args":[{"id":433,"kind":"name","name":"nextTurn"},{"id":434,"kind":"name","name":"O"}]},{"id":438,"kind":"app","opcode":"not","args":[{"id":437,"kind":"app","opcode":"won","args":[{"id":436,"kind":"name","name":"X"}]}]},{"id":440,"kind":"app","opcode":"MoveToEmpty","args":[{"id":439,"kind":"name","name":"O"}]},{"id":443,"kind":"app","opcode":"assign","args":[{"id":442,"kind":"name","name":"nextTurn"},{"id":441,"kind":"name","name":"X"}]}]},"depth":0},"468":{"id":221,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":220,"kind":"app","opcode":"or","args":[{"id":218,"kind":"app","opcode":"or","args":[{"id":215,"kind":"app","opcode":"won","args":[{"id":214,"kind":"name","name":"X"}]},{"id":217,"kind":"app","opcode":"won","args":[{"id":216,"kind":"name","name":"O"}]}]},{"id":219,"kind":"name","name":"boardFull"}]},"depth":0},"469":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"470":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"id":30},"472":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"473":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":31,"kind":"const","name":"Player"},"id":32},"478":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"479":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"482":{"id":11,"kind":"def","name":"O","qualifier":"val","expr":{"id":10,"kind":"app","opcode":"variant","args":[{"id":8,"kind":"str","value":"O"},{"id":9,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"483":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0},"486":{"id":213,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":212,"kind":"app","opcode":"and","args":[{"id":208,"kind":"app","opcode":"and","args":[{"id":204,"kind":"name","name":"boardFull"},{"id":207,"kind":"app","opcode":"not","args":[{"id":206,"kind":"app","opcode":"won","args":[{"id":205,"kind":"name","name":"X"}]}]}]},{"id":211,"kind":"app","opcode":"not","args":[{"id":210,"kind":"app","opcode":"won","args":[{"id":209,"kind":"name","name":"O"}]}]}]},"depth":0},"489":{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":485,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":484,"kind":"app","opcode":"not","args":[{"id":483,"kind":"app","opcode":"won","args":[{"id":482,"kind":"name","name":"O"}]}]},"depth":0},"491":{"id":7,"kind":"def","name":"X","qualifier":"val","expr":{"id":6,"kind":"app","opcode":"variant","args":[{"id":4,"kind":"str","value":"X"},{"id":5,"kind":"app","opcode":"Rec","args":[]}]},"depth":0},"492":{"id":198,"kind":"def","name":"won","qualifier":"def","expr":{"id":198,"kind":"lambda","params":[{"id":186,"name":"player"}],"qualifier":"def","expr":{"id":197,"kind":"app","opcode":"exists","args":[{"id":187,"kind":"name","name":"winningPatterns"},{"id":196,"kind":"lambda","params":[{"id":188,"name":"pattern"}],"qualifier":"def","expr":{"id":195,"kind":"app","opcode":"forall","args":[{"id":189,"kind":"name","name":"pattern"},{"id":194,"kind":"lambda","params":[{"id":190,"name":"coordinate"}],"qualifier":"def","expr":{"id":193,"kind":"app","opcode":"hasPlayer","args":[{"id":191,"kind":"name","name":"coordinate"},{"id":192,"kind":"name","name":"player"}]}}]}}]}},"depth":0}},"types":{"4":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"5":{"typeVariables":{},"rowVariables":{},"type":{"kind":"rec","fields":{"kind":"empty"}}},"6":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"7":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"8":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"9":{"typeVariables":{},"rowVariables":{},"type":{"kind":"rec","fields":{"kind":"empty"}}},"10":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"11":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"15":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"16":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"17":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"18":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"19":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}}},"20":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}}},"21":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"22":{"typeVariables":{},"rowVariables":{},"type":{"kind":"rec","fields":{"kind":"empty"}}},"23":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}},"24":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}},"30":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"32":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"33":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"34":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"35":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"36":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"37":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"38":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"39":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"40":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"41":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"42":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"43":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"44":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"45":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"46":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"47":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"48":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"49":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"50":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"51":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"52":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"53":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"54":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"55":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"56":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"57":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"58":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"59":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"60":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"61":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"62":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"63":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"64":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"65":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"66":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"67":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"68":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"69":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"70":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"71":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"72":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"73":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"74":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"75":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"76":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"77":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"78":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"79":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"80":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"81":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"82":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"83":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"84":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"85":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"86":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"87":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"88":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"89":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"90":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"91":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"92":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"93":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"94":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"95":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"96":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"97":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"98":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"99":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"100":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"101":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"102":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"103":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"104":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"105":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"106":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"107":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"108":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"109":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"110":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"111":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"112":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"113":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"114":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"115":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"116":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"117":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"118":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"119":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"120":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"121":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"122":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"123":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"124":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"125":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"126":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"127":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"128":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"129":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"130":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"131":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"132":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"133":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"134":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"135":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"136":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"137":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"142":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"143":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"144":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"145":{"typeVariables":{},"rowVariables":{},"type":{"id":25,"kind":"int"}},"146":{"typeVariables":{},"rowVariables":{},"type":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}},"147":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"148":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"149":{"typeVariables":{},"rowVariables":{},"type":{"id":26,"kind":"int"}},"150":{"typeVariables":{},"rowVariables":{},"type":{"id":27,"kind":"const","name":"Square"}},"152":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"id":27,"kind":"const","name":"Square"}}},"153":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"154":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"155":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"156":{"typeVariables":{},"rowVariables":{},"type":{"id":27,"kind":"const","name":"Square"}},"157":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"158":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"159":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"160":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"161":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"162":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"163":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":13,"kind":"rec","fields":{"kind":"empty"}}],"res":{"kind":"bool"}}},"164":{"typeVariables":{},"rowVariables":{},"type":{"id":13,"kind":"rec","fields":{"kind":"empty"}}},"165":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"166":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":3,"kind":"bool"}}},"167":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"168":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"bool"}}},"169":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"170":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"171":{"typeVariables":{},"rowVariables":{},"type":{"id":27,"kind":"const","name":"Square"}},"172":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"173":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"174":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"175":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"176":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":13,"kind":"rec","fields":{"kind":"empty"}}],"res":{"kind":"bool"}}},"177":{"typeVariables":{},"rowVariables":{},"type":{"id":13,"kind":"rec","fields":{"kind":"empty"}}},"178":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"179":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"kind":"bool"}}},"180":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"181":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"182":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"183":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"184":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"185":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"186":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"187":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"188":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"189":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"190":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"191":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"192":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"193":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"194":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"195":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"196":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":6,"kind":"bool"}}},"197":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"198":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":6,"kind":"bool"}}},"199":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"200":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"201":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"202":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"203":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"204":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"205":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"206":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"207":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"208":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"209":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"210":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"211":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"212":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"213":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"214":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"215":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"216":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"217":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"218":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"219":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"220":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"221":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"222":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"223":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"224":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"225":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"226":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"227":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"228":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"229":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"230":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"231":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"232":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"233":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"234":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"235":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"236":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"237":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"238":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"239":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"240":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"241":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"242":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"243":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"244":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"245":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"246":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"247":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"248":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"249":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"250":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"251":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"252":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"253":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"254":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"255":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"256":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"257":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"258":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"259":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"260":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"261":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"262":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"263":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"264":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"265":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"266":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"267":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"268":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"269":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"270":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"271":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"272":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"273":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"274":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"275":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"276":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"277":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}},"278":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"279":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"280":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"281":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"282":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"283":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"284":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"285":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"286":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"287":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"288":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"289":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"290":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"291":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"292":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"293":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"294":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"295":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"296":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"297":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"298":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"299":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"300":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"301":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"302":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"303":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"304":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"305":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"306":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"307":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"308":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"309":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"310":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"311":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"312":{"typeVariables":{},"rowVariables":{},"type":{"id":25,"kind":"int"}},"313":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":3}},"314":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":3}},"315":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}},"316":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"317":{"typeVariables":{},"rowVariables":{},"type":{"id":26,"kind":"int"}},"318":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"319":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"320":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":8}},"321":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":3}],"res":{"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"id":13,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}},"id":8}}},"322":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}},"id":10}},"323":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"324":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"325":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"326":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"},{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"id":3,"kind":"bool"}}},"327":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"328":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"329":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"330":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"331":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"332":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"333":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"334":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"335":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"336":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"337":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"338":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"339":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"340":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"341":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"342":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"343":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"344":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"345":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"346":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"347":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"348":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"349":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"350":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"351":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"352":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"353":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"354":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"355":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"356":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"357":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"358":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"359":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"360":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"361":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"362":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"363":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"364":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"365":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"366":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"367":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"368":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"369":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"370":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"371":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"372":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"373":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"374":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"375":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"376":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"377":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"378":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"379":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"380":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"381":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"382":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"383":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"384":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"385":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"386":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"387":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"388":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":25,"kind":"int"}},{"fieldName":"1","fieldType":{"id":26,"kind":"int"}}],"other":{"kind":"empty"}}}],"res":{"kind":"bool"}}},"389":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":7}},"390":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"391":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"392":{"typeVariables":{},"rowVariables":{},"type":{"id":12,"kind":"const","name":"Player"}},"393":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"394":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"395":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"396":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":12,"kind":"const","name":"Player"}],"res":{"id":3,"kind":"bool"}}},"397":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"398":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"399":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"400":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"401":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"402":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"403":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"404":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"405":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"406":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"407":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"408":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"409":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"410":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"411":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"412":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"413":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"414":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"415":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"416":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"417":{"typeVariables":{},"rowVariables":{},"type":{"kind":"bool"}},"418":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"419":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"420":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"421":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"422":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"423":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"424":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"425":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"426":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"427":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"428":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"429":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"430":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"431":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"432":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"433":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"434":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"435":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"436":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"437":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"438":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"439":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"440":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"441":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"442":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"443":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"444":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"445":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"446":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"447":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"448":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"449":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"450":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"451":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"452":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"453":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"454":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"455":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"set","elem":{"id":3,"kind":"int"}}},"456":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"457":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}},"458":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}}}},"459":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}},"id":8}},"460":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}},"id":8}}},"461":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"Empty","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"Occupied","fieldType":{"id":12,"kind":"const","name":"Player"}}],"other":{"kind":"empty"}}}},"id":8},"id":8}},"462":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"463":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"464":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"465":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"466":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"467":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"468":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"469":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"470":{"typeVariables":{},"rowVariables":{},"type":{"id":29,"kind":"fun","arg":{"id":25,"kind":"int"},"res":{"id":28,"kind":"fun","arg":{"id":26,"kind":"int"},"res":{"id":27,"kind":"const","name":"Square"}}}},"471":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"472":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"473":{"typeVariables":{},"rowVariables":{},"type":{"id":31,"kind":"const","name":"Player"}},"474":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"475":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"476":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"477":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"478":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"479":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"480":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"481":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"482":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"id":1,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"483":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"484":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"485":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"486":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"487":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"488":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"489":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"490":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"491":{"typeVariables":{},"rowVariables":{},"type":{"kind":"sum","fields":{"kind":"row","fields":[{"fieldName":"X","fieldType":{"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"row","fields":[{"fieldName":"O","fieldType":{"id":2,"kind":"rec","fields":{"kind":"empty"}}}],"other":{"kind":"empty"}}}}},"492":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"493":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"494":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}}},"effects":{"4":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"5":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"6":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"7":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"8":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"9":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"10":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"11":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"15":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"16":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]},"effectVariables":{},"entityVariables":{}},"17":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]},"effectVariables":{},"entityVariables":{}},"18":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]},"effectVariables":{},"entityVariables":{}},"19":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}},"effectVariables":{},"entityVariables":{}},"20":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v200"}},{"kind":"update","entity":{"kind":"variable","name":"_v201"}}]}}},"21":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"22":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"23":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"24":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"30":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"32":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"33":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"34":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"35":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"36":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"37":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"38":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"39":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"40":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"41":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"42":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"43":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"44":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"45":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"46":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"47":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"48":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"49":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"50":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"51":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"52":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"53":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"54":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"55":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"56":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"57":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"58":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"59":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"60":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"61":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"62":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"63":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"64":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"65":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"66":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"67":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"68":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"69":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"70":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"71":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"72":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"73":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"74":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"75":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"76":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"77":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"78":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"79":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"80":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"81":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"82":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"83":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"84":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"85":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"86":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"87":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"88":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"89":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"90":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"91":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"92":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"93":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"94":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"95":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"96":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"97":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"98":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"99":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"100":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"101":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"102":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"103":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"104":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"105":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"106":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"107":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"108":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"109":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"110":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"111":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"112":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"113":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"114":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"115":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"116":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"117":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"118":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"119":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"120":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"121":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"122":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"123":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"124":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"125":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"126":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"127":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"128":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"129":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"130":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"131":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"132":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"133":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"134":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"135":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"136":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"137":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"142":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"143":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"144":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"145":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"146":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v204"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"147":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"148":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"149":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]},"effectVariables":{},"entityVariables":{}},"150":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v204"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"152":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v204"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v204"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"153":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v238"}}]},"effectVariables":{},"entityVariables":{}},"154":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v239"}}]},"effectVariables":{},"entityVariables":{}},"155":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v238"}}]},"effectVariables":{},"entityVariables":{}},"156":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"157":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"158":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v239"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v240"}}]},"effectVariables":{},"entityVariables":{}},"159":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v241"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v242"}}]},"effectVariables":{},"entityVariables":{}},"160":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v241"}]}},{"kind":"temporal","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v240"},{"kind":"variable","name":"_v242"}]}}]},"effectVariables":{},"entityVariables":{}},"161":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"162":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"163":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"164":{"effect":{"kind":"variable","name":"_e62"},"effectVariables":{},"entityVariables":{}},"165":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"166":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"167":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v241"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v242"}}]},"effectVariables":{},"entityVariables":{}},"168":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v238"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v239"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v239"},{"kind":"variable","name":"_v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"169":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v247"}}]},"effectVariables":{},"entityVariables":{}},"170":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v247"}}]},"effectVariables":{},"entityVariables":{}},"171":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v247"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"172":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"173":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"174":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"175":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"176":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v247"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"177":{"effect":{"kind":"variable","name":"_e67"},"effectVariables":{},"entityVariables":{}},"178":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"179":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v247"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"180":{"effect":{"kind":"variable","name":"_e68"},"effectVariables":{},"entityVariables":{}},"181":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v247"}}]}],"result":{"kind":"concrete","components":[]}}},"182":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"183":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"184":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"185":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"186":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v258"}}]},"effectVariables":{},"entityVariables":{}},"187":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"188":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"189":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"190":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"191":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]},"effectVariables":{},"entityVariables":{}},"192":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v258"}}]},"effectVariables":{},"entityVariables":{}},"193":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"variable","name":"_v257"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"194":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v257"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"variable","name":"_v257"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"195":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v257"},{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"196":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"197":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"198":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v258"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v258"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"199":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"200":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"201":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"202":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"203":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"204":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"205":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"206":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"207":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"208":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"209":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"210":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"211":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"212":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"213":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"214":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"215":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"216":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"217":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"218":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"219":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"220":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"221":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"222":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"223":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]},"effectVariables":{},"entityVariables":{}},"224":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]},"effectVariables":{},"entityVariables":{}},"225":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]},"effectVariables":{},"entityVariables":{}},"226":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"227":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"228":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v274"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"229":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"230":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v274"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"231":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"232":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v286"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"233":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"234":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"235":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"236":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"237":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"238":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"239":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"240":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"241":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]},"effectVariables":{},"entityVariables":{}},"242":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v286"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"243":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v286"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v286"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"244":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"245":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]},"effectVariables":{},"entityVariables":{}},"246":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]},"effectVariables":{},"entityVariables":{}},"247":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]},"effectVariables":{},"entityVariables":{}},"248":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"249":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"250":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v301"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"251":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"252":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v301"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"253":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"254":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v313"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"255":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"256":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"257":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"258":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"259":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"260":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"261":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"262":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"263":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]},"effectVariables":{},"entityVariables":{}},"264":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v313"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"265":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v313"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v313"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"266":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"267":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]},"effectVariables":{},"entityVariables":{}},"268":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]},"effectVariables":{},"entityVariables":{}},"269":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]},"effectVariables":{},"entityVariables":{}},"270":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"271":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"272":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v328"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"273":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"274":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v328"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"275":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"276":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v340"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"277":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"278":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"279":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"280":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"281":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"282":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"283":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"284":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"285":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]},"effectVariables":{},"entityVariables":{}},"286":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v340"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"287":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v340"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v340"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}}},"288":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"289":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"290":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"291":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"292":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"293":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"294":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"295":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"296":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"297":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"298":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"299":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"300":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"301":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"302":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"303":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"304":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"305":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}}]},"effectVariables":{},"entityVariables":{}},"306":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"307":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"308":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"309":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"310":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"311":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"312":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"313":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v365"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v366"}}]},"effectVariables":{},"entityVariables":{}},"314":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v365"}},{"kind":"temporal","entity":{"kind":"variable","name":"_v366"}}]},"effectVariables":{},"entityVariables":{}},"315":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"316":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"317":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]},"effectVariables":{},"entityVariables":{}},"318":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}},{"kind":"update","entity":{"kind":"variable","name":"_v364"}}]},"effectVariables":{},"entityVariables":{}},"319":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}}]},"effectVariables":{},"entityVariables":{}},"320":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v365"},{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"}]}},{"kind":"temporal","entity":{"kind":"variable","name":"_v366"}}]},"effectVariables":{},"entityVariables":{}},"321":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]}},"effectVariables":{},"entityVariables":{}},"322":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}}]},"effectVariables":{},"entityVariables":{}},"323":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"324":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"325":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"326":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v363"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v360"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v360"},{"kind":"variable","name":"_v363"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}}},"327":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"328":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"329":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"330":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"331":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"332":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"333":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"334":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"335":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"336":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"337":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"338":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"339":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"340":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"341":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"342":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"343":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"344":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"345":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"346":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"347":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"348":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"349":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"350":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"351":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"352":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"353":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"354":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"355":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"356":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"357":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"358":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"359":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"360":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"361":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"362":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"363":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"364":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"365":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"366":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"367":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"368":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"369":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"370":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"effectVariables":{},"entityVariables":{}},"371":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"372":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"373":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"374":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"375":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"376":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"377":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"378":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"379":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"380":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"381":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"382":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"383":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"384":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"385":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"386":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v432"}}]},"effectVariables":{},"entityVariables":{}},"387":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"388":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"389":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"390":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"391":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"392":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v432"}}]},"effectVariables":{},"entityVariables":{}},"393":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"394":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v432"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"395":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v432"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"396":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"_v432"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"_v432"},{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}}},"397":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"398":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"399":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[]}},"400":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"401":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"402":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"403":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"404":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"405":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"406":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"407":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"408":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"409":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"410":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"411":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"412":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"413":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"414":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"415":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"416":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"417":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"418":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"419":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"420":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"421":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"422":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"423":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"424":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"425":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"426":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"427":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"428":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"429":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"430":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"431":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"432":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]}},"433":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"434":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"435":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"436":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"437":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"438":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"439":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"440":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"441":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"442":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"443":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"444":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"445":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]}},"446":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"447":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"448":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"449":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"450":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"451":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"452":{"effect":{"kind":"variable","name":"_e54"},"effectVariables":{},"entityVariables":{}},"453":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"454":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"455":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"456":{"effect":{"kind":"variable","name":"_e56"},"effectVariables":{},"entityVariables":{}},"457":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"458":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"459":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"460":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"461":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"462":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"463":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"464":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"465":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}}]}},"466":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"467":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"468":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"469":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"470":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"471":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"472":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"473":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"474":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"475":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"476":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]},"effectVariables":{},"entityVariables":{}},"477":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":32},{"name":"board","reference":30}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30},{"name":"nextTurn","reference":32}]}}]}},"478":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"479":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"480":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"481":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"482":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"483":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"484":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"485":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"486":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"487":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"488":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"489":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"490":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}},"491":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"492":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"493":{"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]},"effectVariables":{},"entityVariables":{}},"494":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":30}]}}]}}},"errors":[]}
\ No newline at end of file
+{"stage":"typechecking","warnings":[],"modules":[{"id":444,"name":"tictactoe","declarations":[{"id":112,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":111,"kind":"app","opcode":"Set","args":[{"id":101,"kind":"app","opcode":"Tup","args":[{"id":99,"kind":"int","value":1},{"id":100,"kind":"int","value":1}]},{"id":104,"kind":"app","opcode":"Tup","args":[{"id":102,"kind":"int","value":3},{"id":103,"kind":"int","value":1}]},{"id":107,"kind":"app","opcode":"Tup","args":[{"id":105,"kind":"int","value":1},{"id":106,"kind":"int","value":3}]},{"id":110,"kind":"app","opcode":"Tup","args":[{"id":108,"kind":"int","value":3},{"id":109,"kind":"int","value":3}]}]}},{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},{"id":414,"kind":"def","name":"init","qualifier":"action","expr":{"id":413,"kind":"app","opcode":"actionAll","args":[{"id":397,"kind":"app","opcode":"assign","args":[{"id":396,"kind":"name","name":"nextTurn"},{"id":395,"kind":"str","value":"X"}]},{"id":412,"kind":"app","opcode":"assign","args":[{"id":411,"kind":"name","name":"board"},{"id":410,"kind":"app","opcode":"mapBy","args":[{"id":400,"kind":"app","opcode":"to","args":[{"id":398,"kind":"int","value":1},{"id":399,"kind":"int","value":3}]},{"id":409,"kind":"lambda","params":[{"id":401,"name":"_"}],"qualifier":"def","expr":{"id":408,"kind":"app","opcode":"mapBy","args":[{"id":404,"kind":"app","opcode":"to","args":[{"id":402,"kind":"int","value":1},{"id":403,"kind":"int","value":3}]},{"id":407,"kind":"lambda","params":[{"id":405,"name":"_"}],"qualifier":"def","expr":{"id":406,"kind":"str","value":"_"}}]}}]}]}]}},{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},{"id":135,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":134,"kind":"app","opcode":"forall","args":[{"id":132,"kind":"name","name":"boardCoordinates"},{"id":133,"kind":"name","name":"isEmpty"}]}},{"id":153,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":152,"kind":"app","opcode":"not","args":[{"id":151,"kind":"app","opcode":"exists","args":[{"id":149,"kind":"name","name":"boardCoordinates"},{"id":150,"kind":"name","name":"isEmpty"}]}]}},{"id":193,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":193,"kind":"lambda","params":[{"id":172,"name":"pattern"}],"qualifier":"def","expr":{"id":192,"kind":"app","opcode":"and","args":[{"id":182,"kind":"app","opcode":"eq","args":[{"id":180,"kind":"app","opcode":"size","args":[{"id":179,"kind":"app","opcode":"filter","args":[{"id":173,"kind":"name","name":"pattern"},{"id":178,"kind":"lambda","params":[{"id":174,"name":"coordinate"}],"qualifier":"def","expr":{"id":177,"kind":"app","opcode":"hasValue","args":[{"id":175,"kind":"name","name":"coordinate"},{"id":176,"kind":"str","value":"X"}]}}]}]},{"id":181,"kind":"int","value":2}]},{"id":191,"kind":"app","opcode":"eq","args":[{"id":189,"kind":"app","opcode":"size","args":[{"id":188,"kind":"app","opcode":"filter","args":[{"id":183,"kind":"name","name":"pattern"},{"id":187,"kind":"lambda","params":[{"id":184,"name":"coordinate"}],"qualifier":"def","expr":{"id":186,"kind":"app","opcode":"isEmpty","args":[{"id":185,"kind":"name","name":"coordinate"}]}}]}]},{"id":190,"kind":"int","value":1}]}]}}},{"id":215,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":215,"kind":"lambda","params":[{"id":194,"name":"pattern"}],"qualifier":"def","expr":{"id":214,"kind":"app","opcode":"and","args":[{"id":204,"kind":"app","opcode":"eq","args":[{"id":202,"kind":"app","opcode":"size","args":[{"id":201,"kind":"app","opcode":"filter","args":[{"id":195,"kind":"name","name":"pattern"},{"id":200,"kind":"lambda","params":[{"id":196,"name":"coordinate"}],"qualifier":"def","expr":{"id":199,"kind":"app","opcode":"hasValue","args":[{"id":197,"kind":"name","name":"coordinate"},{"id":198,"kind":"str","value":"O"}]}}]}]},{"id":203,"kind":"int","value":2}]},{"id":213,"kind":"app","opcode":"eq","args":[{"id":211,"kind":"app","opcode":"size","args":[{"id":210,"kind":"app","opcode":"filter","args":[{"id":205,"kind":"name","name":"pattern"},{"id":209,"kind":"lambda","params":[{"id":206,"name":"coordinate"}],"qualifier":"def","expr":{"id":208,"kind":"app","opcode":"isEmpty","args":[{"id":207,"kind":"name","name":"coordinate"}]}}]}]},{"id":212,"kind":"int","value":1}]}]}}},{"id":237,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":237,"kind":"lambda","params":[{"id":216,"name":"pattern"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"and","args":[{"id":226,"kind":"app","opcode":"eq","args":[{"id":224,"kind":"app","opcode":"size","args":[{"id":223,"kind":"app","opcode":"filter","args":[{"id":217,"kind":"name","name":"pattern"},{"id":222,"kind":"lambda","params":[{"id":218,"name":"coordinate"}],"qualifier":"def","expr":{"id":221,"kind":"app","opcode":"hasValue","args":[{"id":219,"kind":"name","name":"coordinate"},{"id":220,"kind":"str","value":"X"}]}}]}]},{"id":225,"kind":"int","value":1}]},{"id":235,"kind":"app","opcode":"eq","args":[{"id":233,"kind":"app","opcode":"size","args":[{"id":232,"kind":"app","opcode":"filter","args":[{"id":227,"kind":"name","name":"pattern"},{"id":231,"kind":"lambda","params":[{"id":228,"name":"coordinate"}],"qualifier":"def","expr":{"id":230,"kind":"app","opcode":"isEmpty","args":[{"id":229,"kind":"name","name":"coordinate"}]}}]}]},{"id":234,"kind":"int","value":2}]}]}}},{"id":250,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":249,"kind":"app","opcode":"isEmpty","args":[{"id":248,"kind":"app","opcode":"Tup","args":[{"id":246,"kind":"int","value":2},{"id":247,"kind":"int","value":2}]}]}},{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},{"doc":"X has not won. This does not hold, as X wins most of the times.","id":430,"kind":"def","name":"XHasNotWon","qualifier":"val","expr":{"id":429,"kind":"app","opcode":"not","args":[{"id":428,"kind":"app","opcode":"won","args":[{"id":427,"kind":"str","value":"X"}]}]}},{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":434,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":433,"kind":"app","opcode":"not","args":[{"id":432,"kind":"app","opcode":"won","args":[{"id":431,"kind":"str","value":"O"}]}]}},{"doc":"This is not always true, as if O picks the right moves, the game will\nresult in a stalemate.","id":443,"kind":"def","name":"XMustEventuallyWin","qualifier":"temporal","expr":{"id":442,"kind":"app","opcode":"eventually","args":[{"id":441,"kind":"app","opcode":"won","args":[{"id":440,"kind":"str","value":"X"}]}]}},{"id":163,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":162,"kind":"app","opcode":"and","args":[{"id":158,"kind":"app","opcode":"and","args":[{"id":154,"kind":"name","name":"boardFull"},{"id":157,"kind":"app","opcode":"not","args":[{"id":156,"kind":"app","opcode":"won","args":[{"id":155,"kind":"str","value":"X"}]}]}]},{"id":161,"kind":"app","opcode":"not","args":[{"id":160,"kind":"app","opcode":"won","args":[{"id":159,"kind":"str","value":"O"}]}]}]}},{"id":171,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":170,"kind":"app","opcode":"or","args":[{"id":168,"kind":"app","opcode":"or","args":[{"id":165,"kind":"app","opcode":"won","args":[{"id":164,"kind":"str","value":"X"}]},{"id":167,"kind":"app","opcode":"won","args":[{"id":166,"kind":"str","value":"O"}]}]},{"id":169,"kind":"name","name":"boardFull"}]}},{"id":241,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":240,"kind":"app","opcode":"exists","args":[{"id":238,"kind":"name","name":"winningPatterns"},{"id":239,"kind":"name","name":"canWinWithPattern"}]}},{"id":245,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":244,"kind":"app","opcode":"exists","args":[{"id":242,"kind":"name","name":"winningPatterns"},{"id":243,"kind":"name","name":"canBlockWithPattern"}]}},{"id":254,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":253,"kind":"app","opcode":"exists","args":[{"id":251,"kind":"name","name":"winningPatterns"},{"id":252,"kind":"name","name":"canSetupWinWithPattern"}]}},{"id":317,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":316,"kind":"app","opcode":"Move","args":[{"id":312,"kind":"str","value":"X"},{"id":315,"kind":"app","opcode":"Tup","args":[{"id":313,"kind":"int","value":2},{"id":314,"kind":"int","value":2}]}]}},{"id":334,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":333,"kind":"app","opcode":"actionAll","args":[{"id":332,"kind":"let","opdef":{"id":322,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":321,"kind":"app","opcode":"oneOf","args":[{"id":320,"kind":"app","opcode":"filter","args":[{"id":318,"kind":"name","name":"winningPatterns"},{"id":319,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":331,"kind":"let","opdef":{"id":327,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":326,"kind":"app","opcode":"oneOf","args":[{"id":325,"kind":"app","opcode":"filter","args":[{"id":323,"kind":"name","name":"pattern"},{"id":324,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":330,"kind":"app","opcode":"Move","args":[{"id":328,"kind":"str","value":"X"},{"id":329,"kind":"name","name":"coordinate"}]}}}]}},{"id":345,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":345,"kind":"lambda","params":[{"id":335,"name":"player"}],"qualifier":"action","expr":{"id":344,"kind":"let","opdef":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":343,"kind":"app","opcode":"Move","args":[{"id":341,"kind":"name","name":"player"},{"id":342,"kind":"name","name":"coordinate"}]}}}},{"id":353,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":352,"kind":"let","opdef":{"id":348,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":347,"kind":"app","opcode":"oneOf","args":[{"id":346,"kind":"name","name":"corners"}]}},"expr":{"id":351,"kind":"app","opcode":"Move","args":[{"id":349,"kind":"str","value":"X"},{"id":350,"kind":"name","name":"corner"}]}}},{"doc":"OHasNotWon is our default invariant for running the simulator/verifier\nas it is the only invariant that holds. Check `NotStalemate` for an\ninteresting counterexample.","id":439,"kind":"def","name":"inv","qualifier":"val","expr":{"id":438,"kind":"name","name":"OHasNotWon"}},{"id":293,"kind":"def","name":"Win","qualifier":"action","expr":{"id":292,"kind":"app","opcode":"actionAll","args":[{"id":276,"kind":"name","name":"canWin"},{"id":291,"kind":"let","opdef":{"id":281,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":280,"kind":"app","opcode":"oneOf","args":[{"id":279,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"winningPatterns"},{"id":278,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":290,"kind":"let","opdef":{"id":286,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":285,"kind":"app","opcode":"oneOf","args":[{"id":284,"kind":"app","opcode":"filter","args":[{"id":282,"kind":"name","name":"pattern"},{"id":283,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":289,"kind":"app","opcode":"Move","args":[{"id":287,"kind":"str","value":"X"},{"id":288,"kind":"name","name":"coordinate"}]}}}]}},{"id":311,"kind":"def","name":"Block","qualifier":"action","expr":{"id":310,"kind":"app","opcode":"actionAll","args":[{"id":294,"kind":"name","name":"canBlock"},{"id":309,"kind":"let","opdef":{"id":299,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":298,"kind":"app","opcode":"oneOf","args":[{"id":297,"kind":"app","opcode":"filter","args":[{"id":295,"kind":"name","name":"winningPatterns"},{"id":296,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":308,"kind":"let","opdef":{"id":304,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":303,"kind":"app","opcode":"oneOf","args":[{"id":302,"kind":"app","opcode":"filter","args":[{"id":300,"kind":"name","name":"pattern"},{"id":301,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":307,"kind":"app","opcode":"Move","args":[{"id":305,"kind":"str","value":"X"},{"id":306,"kind":"name","name":"coordinate"}]}}}]}},{"id":394,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":393,"kind":"app","opcode":"actionAll","args":[{"id":384,"kind":"app","opcode":"eq","args":[{"id":382,"kind":"name","name":"nextTurn"},{"id":383,"kind":"str","value":"O"}]},{"id":387,"kind":"app","opcode":"not","args":[{"id":386,"kind":"app","opcode":"won","args":[{"id":385,"kind":"str","value":"X"}]}]},{"id":389,"kind":"app","opcode":"MoveToEmpty","args":[{"id":388,"kind":"str","value":"O"}]},{"id":392,"kind":"app","opcode":"assign","args":[{"id":391,"kind":"name","name":"nextTurn"},{"id":390,"kind":"str","value":"X"}]}]}},{"doc":"It's not a stalemate if one player has won or the board is not filled\nCheck with `quint run --invariant=NotStalemate tictactoe.qnt`","id":437,"kind":"def","name":"NotStalemate","qualifier":"val","expr":{"id":436,"kind":"app","opcode":"not","args":[{"id":435,"kind":"name","name":"stalemate"}]}},{"id":381,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":380,"kind":"app","opcode":"actionAll","args":[{"id":356,"kind":"app","opcode":"eq","args":[{"id":354,"kind":"name","name":"nextTurn"},{"id":355,"kind":"str","value":"X"}]},{"id":359,"kind":"app","opcode":"not","args":[{"id":358,"kind":"app","opcode":"won","args":[{"id":357,"kind":"str","value":"O"}]}]},{"id":376,"kind":"app","opcode":"ite","args":[{"id":360,"kind":"name","name":"boardEmpty"},{"id":361,"kind":"name","name":"StartInCorner"},{"id":375,"kind":"app","opcode":"ite","args":[{"id":362,"kind":"name","name":"canWin"},{"id":363,"kind":"name","name":"Win"},{"id":374,"kind":"app","opcode":"ite","args":[{"id":364,"kind":"name","name":"canBlock"},{"id":365,"kind":"name","name":"Block"},{"id":373,"kind":"app","opcode":"ite","args":[{"id":366,"kind":"name","name":"canTakeCenter"},{"id":367,"kind":"name","name":"TakeCenter"},{"id":372,"kind":"app","opcode":"ite","args":[{"id":368,"kind":"name","name":"canSetupWin"},{"id":369,"kind":"name","name":"SetupWin"},{"id":371,"kind":"app","opcode":"MoveToEmpty","args":[{"id":370,"kind":"str","value":"X"}]}]}]}]}]}]},{"id":379,"kind":"app","opcode":"assign","args":[{"id":378,"kind":"name","name":"nextTurn"},{"id":377,"kind":"str","value":"O"}]}]}},{"doc":"Either X or O will make a move, depending on the value of `nextTurn`","id":426,"kind":"def","name":"step","qualifier":"action","expr":{"id":425,"kind":"app","opcode":"actionAny","args":[{"id":415,"kind":"name","name":"MoveX"},{"id":416,"kind":"name","name":"MoveO"},{"id":424,"kind":"app","opcode":"actionAll","args":[{"id":417,"kind":"name","name":"gameOver"},{"id":420,"kind":"app","opcode":"assign","args":[{"id":419,"kind":"name","name":"board"},{"id":418,"kind":"name","name":"board"}]},{"id":423,"kind":"app","opcode":"assign","args":[{"id":422,"kind":"name","name":"nextTurn"},{"id":421,"kind":"name","name":"nextTurn"}]}]}]}}]}],"table":{"115":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"116":{"id":113,"name":"coordinate","kind":"param"},"120":{"id":113,"name":"coordinate","kind":"param"},"124":{"id":114,"name":"player","kind":"param"},"128":{"id":127,"name":"coordinate","kind":"param"},"130":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"132":{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},"133":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"137":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"139":{"id":138,"name":"pattern","kind":"param"},"141":{"id":140,"name":"coordinate","kind":"param"},"142":{"id":136,"name":"player","kind":"param"},"143":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"149":{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},"150":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"154":{"id":153,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":152,"kind":"app","opcode":"not","args":[{"id":151,"kind":"app","opcode":"exists","args":[{"id":149,"kind":"name","name":"boardCoordinates"},{"id":150,"kind":"name","name":"isEmpty"}]}]}},"156":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"160":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"165":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"167":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"169":{"id":153,"kind":"def","name":"boardFull","qualifier":"val","expr":{"id":152,"kind":"app","opcode":"not","args":[{"id":151,"kind":"app","opcode":"exists","args":[{"id":149,"kind":"name","name":"boardCoordinates"},{"id":150,"kind":"name","name":"isEmpty"}]}]}},"173":{"id":172,"name":"pattern","kind":"param"},"175":{"id":174,"name":"coordinate","kind":"param"},"177":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"183":{"id":172,"name":"pattern","kind":"param"},"185":{"id":184,"name":"coordinate","kind":"param"},"186":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"195":{"id":194,"name":"pattern","kind":"param"},"197":{"id":196,"name":"coordinate","kind":"param"},"199":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"205":{"id":194,"name":"pattern","kind":"param"},"207":{"id":206,"name":"coordinate","kind":"param"},"208":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"217":{"id":216,"name":"pattern","kind":"param"},"219":{"id":218,"name":"coordinate","kind":"param"},"221":{"id":126,"kind":"def","name":"hasValue","qualifier":"def","expr":{"id":126,"kind":"lambda","params":[{"id":113,"name":"coordinate"},{"id":114,"name":"player"}],"qualifier":"def","expr":{"id":125,"kind":"app","opcode":"eq","args":[{"id":123,"kind":"app","opcode":"get","args":[{"id":119,"kind":"app","opcode":"get","args":[{"id":115,"kind":"name","name":"board"},{"id":118,"kind":"app","opcode":"item","args":[{"id":116,"kind":"name","name":"coordinate"},{"id":117,"kind":"int","value":1}]}]},{"id":122,"kind":"app","opcode":"item","args":[{"id":120,"kind":"name","name":"coordinate"},{"id":121,"kind":"int","value":2}]}]},{"id":124,"kind":"name","name":"player"}]}}},"227":{"id":216,"name":"pattern","kind":"param"},"229":{"id":228,"name":"coordinate","kind":"param"},"230":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"238":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"239":{"id":193,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":193,"kind":"lambda","params":[{"id":172,"name":"pattern"}],"qualifier":"def","expr":{"id":192,"kind":"app","opcode":"and","args":[{"id":182,"kind":"app","opcode":"eq","args":[{"id":180,"kind":"app","opcode":"size","args":[{"id":179,"kind":"app","opcode":"filter","args":[{"id":173,"kind":"name","name":"pattern"},{"id":178,"kind":"lambda","params":[{"id":174,"name":"coordinate"}],"qualifier":"def","expr":{"id":177,"kind":"app","opcode":"hasValue","args":[{"id":175,"kind":"name","name":"coordinate"},{"id":176,"kind":"str","value":"X"}]}}]}]},{"id":181,"kind":"int","value":2}]},{"id":191,"kind":"app","opcode":"eq","args":[{"id":189,"kind":"app","opcode":"size","args":[{"id":188,"kind":"app","opcode":"filter","args":[{"id":183,"kind":"name","name":"pattern"},{"id":187,"kind":"lambda","params":[{"id":184,"name":"coordinate"}],"qualifier":"def","expr":{"id":186,"kind":"app","opcode":"isEmpty","args":[{"id":185,"kind":"name","name":"coordinate"}]}}]}]},{"id":190,"kind":"int","value":1}]}]}}},"242":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"243":{"id":215,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":215,"kind":"lambda","params":[{"id":194,"name":"pattern"}],"qualifier":"def","expr":{"id":214,"kind":"app","opcode":"and","args":[{"id":204,"kind":"app","opcode":"eq","args":[{"id":202,"kind":"app","opcode":"size","args":[{"id":201,"kind":"app","opcode":"filter","args":[{"id":195,"kind":"name","name":"pattern"},{"id":200,"kind":"lambda","params":[{"id":196,"name":"coordinate"}],"qualifier":"def","expr":{"id":199,"kind":"app","opcode":"hasValue","args":[{"id":197,"kind":"name","name":"coordinate"},{"id":198,"kind":"str","value":"O"}]}}]}]},{"id":203,"kind":"int","value":2}]},{"id":213,"kind":"app","opcode":"eq","args":[{"id":211,"kind":"app","opcode":"size","args":[{"id":210,"kind":"app","opcode":"filter","args":[{"id":205,"kind":"name","name":"pattern"},{"id":209,"kind":"lambda","params":[{"id":206,"name":"coordinate"}],"qualifier":"def","expr":{"id":208,"kind":"app","opcode":"isEmpty","args":[{"id":207,"kind":"name","name":"coordinate"}]}}]}]},{"id":212,"kind":"int","value":1}]}]}}},"249":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"251":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"252":{"id":237,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":237,"kind":"lambda","params":[{"id":216,"name":"pattern"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"and","args":[{"id":226,"kind":"app","opcode":"eq","args":[{"id":224,"kind":"app","opcode":"size","args":[{"id":223,"kind":"app","opcode":"filter","args":[{"id":217,"kind":"name","name":"pattern"},{"id":222,"kind":"lambda","params":[{"id":218,"name":"coordinate"}],"qualifier":"def","expr":{"id":221,"kind":"app","opcode":"hasValue","args":[{"id":219,"kind":"name","name":"coordinate"},{"id":220,"kind":"str","value":"X"}]}}]}]},{"id":225,"kind":"int","value":1}]},{"id":235,"kind":"app","opcode":"eq","args":[{"id":233,"kind":"app","opcode":"size","args":[{"id":232,"kind":"app","opcode":"filter","args":[{"id":227,"kind":"name","name":"pattern"},{"id":231,"kind":"lambda","params":[{"id":228,"name":"coordinate"}],"qualifier":"def","expr":{"id":230,"kind":"app","opcode":"isEmpty","args":[{"id":229,"kind":"name","name":"coordinate"}]}}]}]},{"id":234,"kind":"int","value":2}]}]}}},"257":{"id":256,"name":"coordinate","kind":"param"},"258":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"259":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"260":{"id":256,"name":"coordinate","kind":"param"},"264":{"id":263,"name":"row","kind":"param"},"265":{"id":256,"name":"coordinate","kind":"param"},"268":{"id":255,"name":"player","kind":"param"},"272":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"276":{"id":241,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":240,"kind":"app","opcode":"exists","args":[{"id":238,"kind":"name","name":"winningPatterns"},{"id":239,"kind":"name","name":"canWinWithPattern"}]}},"277":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"278":{"id":193,"kind":"def","name":"canWinWithPattern","qualifier":"def","expr":{"id":193,"kind":"lambda","params":[{"id":172,"name":"pattern"}],"qualifier":"def","expr":{"id":192,"kind":"app","opcode":"and","args":[{"id":182,"kind":"app","opcode":"eq","args":[{"id":180,"kind":"app","opcode":"size","args":[{"id":179,"kind":"app","opcode":"filter","args":[{"id":173,"kind":"name","name":"pattern"},{"id":178,"kind":"lambda","params":[{"id":174,"name":"coordinate"}],"qualifier":"def","expr":{"id":177,"kind":"app","opcode":"hasValue","args":[{"id":175,"kind":"name","name":"coordinate"},{"id":176,"kind":"str","value":"X"}]}}]}]},{"id":181,"kind":"int","value":2}]},{"id":191,"kind":"app","opcode":"eq","args":[{"id":189,"kind":"app","opcode":"size","args":[{"id":188,"kind":"app","opcode":"filter","args":[{"id":183,"kind":"name","name":"pattern"},{"id":187,"kind":"lambda","params":[{"id":184,"name":"coordinate"}],"qualifier":"def","expr":{"id":186,"kind":"app","opcode":"isEmpty","args":[{"id":185,"kind":"name","name":"coordinate"}]}}]}]},{"id":190,"kind":"int","value":1}]}]}}},"282":{"id":281,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":280,"kind":"app","opcode":"oneOf","args":[{"id":279,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"winningPatterns"},{"id":278,"kind":"name","name":"canWinWithPattern"}]}]}},"283":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"288":{"id":286,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":285,"kind":"app","opcode":"oneOf","args":[{"id":284,"kind":"app","opcode":"filter","args":[{"id":282,"kind":"name","name":"pattern"},{"id":283,"kind":"name","name":"isEmpty"}]}]}},"289":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"294":{"id":245,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":244,"kind":"app","opcode":"exists","args":[{"id":242,"kind":"name","name":"winningPatterns"},{"id":243,"kind":"name","name":"canBlockWithPattern"}]}},"295":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"296":{"id":215,"kind":"def","name":"canBlockWithPattern","qualifier":"def","expr":{"id":215,"kind":"lambda","params":[{"id":194,"name":"pattern"}],"qualifier":"def","expr":{"id":214,"kind":"app","opcode":"and","args":[{"id":204,"kind":"app","opcode":"eq","args":[{"id":202,"kind":"app","opcode":"size","args":[{"id":201,"kind":"app","opcode":"filter","args":[{"id":195,"kind":"name","name":"pattern"},{"id":200,"kind":"lambda","params":[{"id":196,"name":"coordinate"}],"qualifier":"def","expr":{"id":199,"kind":"app","opcode":"hasValue","args":[{"id":197,"kind":"name","name":"coordinate"},{"id":198,"kind":"str","value":"O"}]}}]}]},{"id":203,"kind":"int","value":2}]},{"id":213,"kind":"app","opcode":"eq","args":[{"id":211,"kind":"app","opcode":"size","args":[{"id":210,"kind":"app","opcode":"filter","args":[{"id":205,"kind":"name","name":"pattern"},{"id":209,"kind":"lambda","params":[{"id":206,"name":"coordinate"}],"qualifier":"def","expr":{"id":208,"kind":"app","opcode":"isEmpty","args":[{"id":207,"kind":"name","name":"coordinate"}]}}]}]},{"id":212,"kind":"int","value":1}]}]}}},"300":{"id":299,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":298,"kind":"app","opcode":"oneOf","args":[{"id":297,"kind":"app","opcode":"filter","args":[{"id":295,"kind":"name","name":"winningPatterns"},{"id":296,"kind":"name","name":"canBlockWithPattern"}]}]}},"301":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"306":{"id":304,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":303,"kind":"app","opcode":"oneOf","args":[{"id":302,"kind":"app","opcode":"filter","args":[{"id":300,"kind":"name","name":"pattern"},{"id":301,"kind":"name","name":"isEmpty"}]}]}},"307":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"316":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"318":{"id":98,"kind":"def","name":"winningPatterns","qualifier":"pureval","expr":{"id":97,"kind":"app","opcode":"Set","args":[{"id":26,"kind":"app","opcode":"Set","args":[{"id":19,"kind":"app","opcode":"Tup","args":[{"id":17,"kind":"int","value":1},{"id":18,"kind":"int","value":1}]},{"id":22,"kind":"app","opcode":"Tup","args":[{"id":20,"kind":"int","value":1},{"id":21,"kind":"int","value":2}]},{"id":25,"kind":"app","opcode":"Tup","args":[{"id":23,"kind":"int","value":1},{"id":24,"kind":"int","value":3}]}]},{"id":36,"kind":"app","opcode":"Set","args":[{"id":29,"kind":"app","opcode":"Tup","args":[{"id":27,"kind":"int","value":2},{"id":28,"kind":"int","value":1}]},{"id":32,"kind":"app","opcode":"Tup","args":[{"id":30,"kind":"int","value":2},{"id":31,"kind":"int","value":2}]},{"id":35,"kind":"app","opcode":"Tup","args":[{"id":33,"kind":"int","value":2},{"id":34,"kind":"int","value":3}]}]},{"id":46,"kind":"app","opcode":"Set","args":[{"id":39,"kind":"app","opcode":"Tup","args":[{"id":37,"kind":"int","value":3},{"id":38,"kind":"int","value":1}]},{"id":42,"kind":"app","opcode":"Tup","args":[{"id":40,"kind":"int","value":3},{"id":41,"kind":"int","value":2}]},{"id":45,"kind":"app","opcode":"Tup","args":[{"id":43,"kind":"int","value":3},{"id":44,"kind":"int","value":3}]}]},{"id":56,"kind":"app","opcode":"Set","args":[{"id":49,"kind":"app","opcode":"Tup","args":[{"id":47,"kind":"int","value":1},{"id":48,"kind":"int","value":1}]},{"id":52,"kind":"app","opcode":"Tup","args":[{"id":50,"kind":"int","value":2},{"id":51,"kind":"int","value":1}]},{"id":55,"kind":"app","opcode":"Tup","args":[{"id":53,"kind":"int","value":3},{"id":54,"kind":"int","value":1}]}]},{"id":66,"kind":"app","opcode":"Set","args":[{"id":59,"kind":"app","opcode":"Tup","args":[{"id":57,"kind":"int","value":1},{"id":58,"kind":"int","value":2}]},{"id":62,"kind":"app","opcode":"Tup","args":[{"id":60,"kind":"int","value":2},{"id":61,"kind":"int","value":2}]},{"id":65,"kind":"app","opcode":"Tup","args":[{"id":63,"kind":"int","value":3},{"id":64,"kind":"int","value":2}]}]},{"id":76,"kind":"app","opcode":"Set","args":[{"id":69,"kind":"app","opcode":"Tup","args":[{"id":67,"kind":"int","value":1},{"id":68,"kind":"int","value":3}]},{"id":72,"kind":"app","opcode":"Tup","args":[{"id":70,"kind":"int","value":2},{"id":71,"kind":"int","value":3}]},{"id":75,"kind":"app","opcode":"Tup","args":[{"id":73,"kind":"int","value":3},{"id":74,"kind":"int","value":3}]}]},{"id":86,"kind":"app","opcode":"Set","args":[{"id":79,"kind":"app","opcode":"Tup","args":[{"id":77,"kind":"int","value":1},{"id":78,"kind":"int","value":1}]},{"id":82,"kind":"app","opcode":"Tup","args":[{"id":80,"kind":"int","value":2},{"id":81,"kind":"int","value":2}]},{"id":85,"kind":"app","opcode":"Tup","args":[{"id":83,"kind":"int","value":3},{"id":84,"kind":"int","value":3}]}]},{"id":96,"kind":"app","opcode":"Set","args":[{"id":89,"kind":"app","opcode":"Tup","args":[{"id":87,"kind":"int","value":3},{"id":88,"kind":"int","value":1}]},{"id":92,"kind":"app","opcode":"Tup","args":[{"id":90,"kind":"int","value":2},{"id":91,"kind":"int","value":2}]},{"id":95,"kind":"app","opcode":"Tup","args":[{"id":93,"kind":"int","value":1},{"id":94,"kind":"int","value":3}]}]}]}},"319":{"id":237,"kind":"def","name":"canSetupWinWithPattern","qualifier":"def","expr":{"id":237,"kind":"lambda","params":[{"id":216,"name":"pattern"}],"qualifier":"def","expr":{"id":236,"kind":"app","opcode":"and","args":[{"id":226,"kind":"app","opcode":"eq","args":[{"id":224,"kind":"app","opcode":"size","args":[{"id":223,"kind":"app","opcode":"filter","args":[{"id":217,"kind":"name","name":"pattern"},{"id":222,"kind":"lambda","params":[{"id":218,"name":"coordinate"}],"qualifier":"def","expr":{"id":221,"kind":"app","opcode":"hasValue","args":[{"id":219,"kind":"name","name":"coordinate"},{"id":220,"kind":"str","value":"X"}]}}]}]},{"id":225,"kind":"int","value":1}]},{"id":235,"kind":"app","opcode":"eq","args":[{"id":233,"kind":"app","opcode":"size","args":[{"id":232,"kind":"app","opcode":"filter","args":[{"id":227,"kind":"name","name":"pattern"},{"id":231,"kind":"lambda","params":[{"id":228,"name":"coordinate"}],"qualifier":"def","expr":{"id":230,"kind":"app","opcode":"isEmpty","args":[{"id":229,"kind":"name","name":"coordinate"}]}}]}]},{"id":234,"kind":"int","value":2}]}]}}},"323":{"id":322,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":321,"kind":"app","opcode":"oneOf","args":[{"id":320,"kind":"app","opcode":"filter","args":[{"id":318,"kind":"name","name":"winningPatterns"},{"id":319,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"324":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"329":{"id":327,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":326,"kind":"app","opcode":"oneOf","args":[{"id":325,"kind":"app","opcode":"filter","args":[{"id":323,"kind":"name","name":"pattern"},{"id":324,"kind":"name","name":"isEmpty"}]}]}},"330":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"336":{"id":16,"kind":"def","name":"boardCoordinates","qualifier":"pureval","expr":{"id":15,"kind":"app","opcode":"tuples","args":[{"id":11,"kind":"app","opcode":"to","args":[{"id":9,"kind":"int","value":1},{"id":10,"kind":"int","value":3}]},{"id":14,"kind":"app","opcode":"to","args":[{"id":12,"kind":"int","value":1},{"id":13,"kind":"int","value":3}]}]}},"337":{"id":131,"kind":"def","name":"isEmpty","qualifier":"def","expr":{"id":131,"kind":"lambda","params":[{"id":127,"name":"coordinate"}],"qualifier":"def","expr":{"id":130,"kind":"app","opcode":"hasValue","args":[{"id":128,"kind":"name","name":"coordinate"},{"id":129,"kind":"str","value":"_"}]}}},"341":{"id":335,"name":"player","kind":"param"},"342":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"343":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"346":{"id":112,"kind":"def","name":"corners","qualifier":"pureval","expr":{"id":111,"kind":"app","opcode":"Set","args":[{"id":101,"kind":"app","opcode":"Tup","args":[{"id":99,"kind":"int","value":1},{"id":100,"kind":"int","value":1}]},{"id":104,"kind":"app","opcode":"Tup","args":[{"id":102,"kind":"int","value":3},{"id":103,"kind":"int","value":1}]},{"id":107,"kind":"app","opcode":"Tup","args":[{"id":105,"kind":"int","value":1},{"id":106,"kind":"int","value":3}]},{"id":110,"kind":"app","opcode":"Tup","args":[{"id":108,"kind":"int","value":3},{"id":109,"kind":"int","value":3}]}]}},"350":{"id":348,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":347,"kind":"app","opcode":"oneOf","args":[{"id":346,"kind":"name","name":"corners"}]}},"351":{"id":275,"kind":"def","name":"Move","qualifier":"action","expr":{"id":275,"kind":"lambda","params":[{"id":255,"name":"player"},{"id":256,"name":"coordinate"}],"qualifier":"action","expr":{"id":274,"kind":"app","opcode":"actionAll","args":[{"id":258,"kind":"app","opcode":"isEmpty","args":[{"id":257,"kind":"name","name":"coordinate"}]},{"id":273,"kind":"app","opcode":"assign","args":[{"id":272,"kind":"name","name":"board"},{"id":271,"kind":"app","opcode":"setBy","args":[{"id":259,"kind":"name","name":"board"},{"id":262,"kind":"app","opcode":"item","args":[{"id":260,"kind":"name","name":"coordinate"},{"id":261,"kind":"int","value":1}]},{"id":270,"kind":"lambda","params":[{"id":263,"name":"row"}],"qualifier":"def","expr":{"id":269,"kind":"app","opcode":"set","args":[{"id":264,"kind":"name","name":"row"},{"id":267,"kind":"app","opcode":"item","args":[{"id":265,"kind":"name","name":"coordinate"},{"id":266,"kind":"int","value":2}]},{"id":268,"kind":"name","name":"player"}]}}]}]}]}}},"354":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"358":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"360":{"id":135,"kind":"def","name":"boardEmpty","qualifier":"val","expr":{"id":134,"kind":"app","opcode":"forall","args":[{"id":132,"kind":"name","name":"boardCoordinates"},{"id":133,"kind":"name","name":"isEmpty"}]}},"361":{"id":353,"kind":"def","name":"StartInCorner","qualifier":"action","expr":{"id":352,"kind":"let","opdef":{"id":348,"kind":"def","name":"corner","qualifier":"nondet","expr":{"id":347,"kind":"app","opcode":"oneOf","args":[{"id":346,"kind":"name","name":"corners"}]}},"expr":{"id":351,"kind":"app","opcode":"Move","args":[{"id":349,"kind":"str","value":"X"},{"id":350,"kind":"name","name":"corner"}]}}},"362":{"id":241,"kind":"def","name":"canWin","qualifier":"val","expr":{"id":240,"kind":"app","opcode":"exists","args":[{"id":238,"kind":"name","name":"winningPatterns"},{"id":239,"kind":"name","name":"canWinWithPattern"}]}},"363":{"id":293,"kind":"def","name":"Win","qualifier":"action","expr":{"id":292,"kind":"app","opcode":"actionAll","args":[{"id":276,"kind":"name","name":"canWin"},{"id":291,"kind":"let","opdef":{"id":281,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":280,"kind":"app","opcode":"oneOf","args":[{"id":279,"kind":"app","opcode":"filter","args":[{"id":277,"kind":"name","name":"winningPatterns"},{"id":278,"kind":"name","name":"canWinWithPattern"}]}]}},"expr":{"id":290,"kind":"let","opdef":{"id":286,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":285,"kind":"app","opcode":"oneOf","args":[{"id":284,"kind":"app","opcode":"filter","args":[{"id":282,"kind":"name","name":"pattern"},{"id":283,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":289,"kind":"app","opcode":"Move","args":[{"id":287,"kind":"str","value":"X"},{"id":288,"kind":"name","name":"coordinate"}]}}}]}},"364":{"id":245,"kind":"def","name":"canBlock","qualifier":"val","expr":{"id":244,"kind":"app","opcode":"exists","args":[{"id":242,"kind":"name","name":"winningPatterns"},{"id":243,"kind":"name","name":"canBlockWithPattern"}]}},"365":{"id":311,"kind":"def","name":"Block","qualifier":"action","expr":{"id":310,"kind":"app","opcode":"actionAll","args":[{"id":294,"kind":"name","name":"canBlock"},{"id":309,"kind":"let","opdef":{"id":299,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":298,"kind":"app","opcode":"oneOf","args":[{"id":297,"kind":"app","opcode":"filter","args":[{"id":295,"kind":"name","name":"winningPatterns"},{"id":296,"kind":"name","name":"canBlockWithPattern"}]}]}},"expr":{"id":308,"kind":"let","opdef":{"id":304,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":303,"kind":"app","opcode":"oneOf","args":[{"id":302,"kind":"app","opcode":"filter","args":[{"id":300,"kind":"name","name":"pattern"},{"id":301,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":307,"kind":"app","opcode":"Move","args":[{"id":305,"kind":"str","value":"X"},{"id":306,"kind":"name","name":"coordinate"}]}}}]}},"366":{"id":250,"kind":"def","name":"canTakeCenter","qualifier":"val","expr":{"id":249,"kind":"app","opcode":"isEmpty","args":[{"id":248,"kind":"app","opcode":"Tup","args":[{"id":246,"kind":"int","value":2},{"id":247,"kind":"int","value":2}]}]}},"367":{"id":317,"kind":"def","name":"TakeCenter","qualifier":"action","expr":{"id":316,"kind":"app","opcode":"Move","args":[{"id":312,"kind":"str","value":"X"},{"id":315,"kind":"app","opcode":"Tup","args":[{"id":313,"kind":"int","value":2},{"id":314,"kind":"int","value":2}]}]}},"368":{"id":254,"kind":"def","name":"canSetupWin","qualifier":"val","expr":{"id":253,"kind":"app","opcode":"exists","args":[{"id":251,"kind":"name","name":"winningPatterns"},{"id":252,"kind":"name","name":"canSetupWinWithPattern"}]}},"369":{"id":334,"kind":"def","name":"SetupWin","qualifier":"action","expr":{"id":333,"kind":"app","opcode":"actionAll","args":[{"id":332,"kind":"let","opdef":{"id":322,"kind":"def","name":"pattern","qualifier":"nondet","expr":{"id":321,"kind":"app","opcode":"oneOf","args":[{"id":320,"kind":"app","opcode":"filter","args":[{"id":318,"kind":"name","name":"winningPatterns"},{"id":319,"kind":"name","name":"canSetupWinWithPattern"}]}]}},"expr":{"id":331,"kind":"let","opdef":{"id":327,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":326,"kind":"app","opcode":"oneOf","args":[{"id":325,"kind":"app","opcode":"filter","args":[{"id":323,"kind":"name","name":"pattern"},{"id":324,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":330,"kind":"app","opcode":"Move","args":[{"id":328,"kind":"str","value":"X"},{"id":329,"kind":"name","name":"coordinate"}]}}}]}},"371":{"id":345,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":345,"kind":"lambda","params":[{"id":335,"name":"player"}],"qualifier":"action","expr":{"id":344,"kind":"let","opdef":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":343,"kind":"app","opcode":"Move","args":[{"id":341,"kind":"name","name":"player"},{"id":342,"kind":"name","name":"coordinate"}]}}}},"378":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"382":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"386":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"389":{"id":345,"kind":"def","name":"MoveToEmpty","qualifier":"action","expr":{"id":345,"kind":"lambda","params":[{"id":335,"name":"player"}],"qualifier":"action","expr":{"id":344,"kind":"let","opdef":{"id":340,"kind":"def","name":"coordinate","qualifier":"nondet","expr":{"id":339,"kind":"app","opcode":"oneOf","args":[{"id":338,"kind":"app","opcode":"filter","args":[{"id":336,"kind":"name","name":"boardCoordinates"},{"id":337,"kind":"name","name":"isEmpty"}]}]}},"expr":{"id":343,"kind":"app","opcode":"Move","args":[{"id":341,"kind":"name","name":"player"},{"id":342,"kind":"name","name":"coordinate"}]}}}},"391":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"396":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"411":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"415":{"id":381,"kind":"def","name":"MoveX","qualifier":"action","expr":{"id":380,"kind":"app","opcode":"actionAll","args":[{"id":356,"kind":"app","opcode":"eq","args":[{"id":354,"kind":"name","name":"nextTurn"},{"id":355,"kind":"str","value":"X"}]},{"id":359,"kind":"app","opcode":"not","args":[{"id":358,"kind":"app","opcode":"won","args":[{"id":357,"kind":"str","value":"O"}]}]},{"id":376,"kind":"app","opcode":"ite","args":[{"id":360,"kind":"name","name":"boardEmpty"},{"id":361,"kind":"name","name":"StartInCorner"},{"id":375,"kind":"app","opcode":"ite","args":[{"id":362,"kind":"name","name":"canWin"},{"id":363,"kind":"name","name":"Win"},{"id":374,"kind":"app","opcode":"ite","args":[{"id":364,"kind":"name","name":"canBlock"},{"id":365,"kind":"name","name":"Block"},{"id":373,"kind":"app","opcode":"ite","args":[{"id":366,"kind":"name","name":"canTakeCenter"},{"id":367,"kind":"name","name":"TakeCenter"},{"id":372,"kind":"app","opcode":"ite","args":[{"id":368,"kind":"name","name":"canSetupWin"},{"id":369,"kind":"name","name":"SetupWin"},{"id":371,"kind":"app","opcode":"MoveToEmpty","args":[{"id":370,"kind":"str","value":"X"}]}]}]}]}]}]},{"id":379,"kind":"app","opcode":"assign","args":[{"id":378,"kind":"name","name":"nextTurn"},{"id":377,"kind":"str","value":"O"}]}]}},"416":{"id":394,"kind":"def","name":"MoveO","qualifier":"action","expr":{"id":393,"kind":"app","opcode":"actionAll","args":[{"id":384,"kind":"app","opcode":"eq","args":[{"id":382,"kind":"name","name":"nextTurn"},{"id":383,"kind":"str","value":"O"}]},{"id":387,"kind":"app","opcode":"not","args":[{"id":386,"kind":"app","opcode":"won","args":[{"id":385,"kind":"str","value":"X"}]}]},{"id":389,"kind":"app","opcode":"MoveToEmpty","args":[{"id":388,"kind":"str","value":"O"}]},{"id":392,"kind":"app","opcode":"assign","args":[{"id":391,"kind":"name","name":"nextTurn"},{"id":390,"kind":"str","value":"X"}]}]}},"417":{"id":171,"kind":"def","name":"gameOver","qualifier":"val","expr":{"id":170,"kind":"app","opcode":"or","args":[{"id":168,"kind":"app","opcode":"or","args":[{"id":165,"kind":"app","opcode":"won","args":[{"id":164,"kind":"str","value":"X"}]},{"id":167,"kind":"app","opcode":"won","args":[{"id":166,"kind":"str","value":"O"}]}]},{"id":169,"kind":"name","name":"boardFull"}]}},"418":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"419":{"doc":"A 3x3 tic-tac-toe board","kind":"var","name":"board","typeAnnotation":{"id":5,"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"id":4,"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"}}},"id":6},"421":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"422":{"doc":"Who goes next","kind":"var","name":"nextTurn","typeAnnotation":{"id":7,"kind":"str"},"id":8},"428":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"432":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}},"435":{"id":163,"kind":"def","name":"stalemate","qualifier":"val","expr":{"id":162,"kind":"app","opcode":"and","args":[{"id":158,"kind":"app","opcode":"and","args":[{"id":154,"kind":"name","name":"boardFull"},{"id":157,"kind":"app","opcode":"not","args":[{"id":156,"kind":"app","opcode":"won","args":[{"id":155,"kind":"str","value":"X"}]}]}]},{"id":161,"kind":"app","opcode":"not","args":[{"id":160,"kind":"app","opcode":"won","args":[{"id":159,"kind":"str","value":"O"}]}]}]}},"438":{"doc":"O has not won. This should hold, as O can only achieve a draw.","id":434,"kind":"def","name":"OHasNotWon","qualifier":"val","expr":{"id":433,"kind":"app","opcode":"not","args":[{"id":432,"kind":"app","opcode":"won","args":[{"id":431,"kind":"str","value":"O"}]}]}},"441":{"id":148,"kind":"def","name":"won","qualifier":"def","expr":{"id":148,"kind":"lambda","params":[{"id":136,"name":"player"}],"qualifier":"def","expr":{"id":147,"kind":"app","opcode":"exists","args":[{"id":137,"kind":"name","name":"winningPatterns"},{"id":146,"kind":"lambda","params":[{"id":138,"name":"pattern"}],"qualifier":"def","expr":{"id":145,"kind":"app","opcode":"forall","args":[{"id":139,"kind":"name","name":"pattern"},{"id":144,"kind":"lambda","params":[{"id":140,"name":"coordinate"}],"qualifier":"def","expr":{"id":143,"kind":"app","opcode":"hasValue","args":[{"id":141,"kind":"name","name":"coordinate"},{"id":142,"kind":"name","name":"player"}]}}]}}]}}}},"types":{"6":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"8":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"9":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"10":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"11":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"12":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"13":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"14":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"15":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"16":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"17":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"18":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"19":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"20":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"21":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"22":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"23":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"24":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"25":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"26":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"27":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"28":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"29":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"30":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"31":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"32":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"33":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"34":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"35":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"36":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"37":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"38":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"39":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"40":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"41":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"42":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"43":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"44":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"45":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"46":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"47":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"48":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"49":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"50":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"51":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"52":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"53":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"54":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"55":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"56":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"57":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"58":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"59":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"60":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"61":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"62":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"63":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"64":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"65":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"66":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"67":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"68":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"69":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"70":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"71":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"72":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"73":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"74":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"75":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"76":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"77":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"78":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"79":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"80":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"81":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"82":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"83":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"84":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"85":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"86":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"87":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"88":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"89":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"90":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"91":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"92":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"93":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"94":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"95":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"96":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"97":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"98":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"99":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"100":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"101":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"102":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"103":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"104":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"105":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"106":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"107":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"108":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"109":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"110":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"111":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"112":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"113":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}}},"114":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"115":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"116":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}}},"117":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"118":{"typeVariables":{},"rowVariables":{},"type":{"id":1,"kind":"int"}},"119":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4}},"120":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}}},"121":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"122":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"int"}},"123":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"124":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"125":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"126":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t57"}}}},{"id":3,"kind":"str"}],"res":{"id":3,"kind":"bool"}}},"127":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t78"}}}}},"128":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t78"}}}}},"129":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"130":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"131":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t78"}}}}],"res":{"id":3,"kind":"bool"}}},"132":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"133":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"134":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"135":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"136":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"137":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"138":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}},"139":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}},"140":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}},"141":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}},"142":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"143":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"144":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"145":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"146":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":6,"kind":"bool"}}},"147":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"148":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"str"}],"res":{"id":6,"kind":"bool"}}},"149":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"150":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"151":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"152":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"153":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"154":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"155":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"156":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"157":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"158":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"159":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"160":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"161":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"162":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"163":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"164":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"165":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"166":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"167":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"168":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"169":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"170":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"171":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"172":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}},"173":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}},"174":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"175":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"176":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"177":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"178":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}],"res":{"id":3,"kind":"bool"}}},"179":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":7}},"180":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"181":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"182":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"183":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}},"184":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"185":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}},"186":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"187":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}}],"res":{"id":3,"kind":"bool"}}},"188":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":7}},"189":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"190":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"191":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"192":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"193":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t101"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"194":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}},"195":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}},"196":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"197":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"198":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"199":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"200":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}],"res":{"id":3,"kind":"bool"}}},"201":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":7}},"202":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"203":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"204":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"205":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}},"206":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"207":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}},"208":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"209":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}}],"res":{"id":3,"kind":"bool"}}},"210":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":7}},"211":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"212":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"213":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"214":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"215":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t118"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"216":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}},"217":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}},"218":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"219":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"220":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"221":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"222":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}],"res":{"id":3,"kind":"bool"}}},"223":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":7}},"224":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"225":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"226":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"227":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}},"228":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"229":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}},"230":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"231":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}}],"res":{"id":3,"kind":"bool"}}},"232":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":7}},"233":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"234":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"235":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"236":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"237":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"t135"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"238":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"239":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"240":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"241":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"242":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"243":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"244":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"245":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"246":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"247":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"248":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"249":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"250":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"251":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"252":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"253":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"254":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"255":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"256":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"257":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"258":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"259":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"260":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"261":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"262":{"typeVariables":{},"rowVariables":{},"type":{"id":1,"kind":"int"}},"263":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":3}},"264":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":3}},"265":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}},"266":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"267":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"int"}},"268":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"269":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":8}},"270":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":3}],"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":8}}},"271":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":10}},"272":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"273":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"274":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"275":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"str"},{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"var","name":"tail_t150"}}}}],"res":{"id":3,"kind":"bool"}}},"276":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"277":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"278":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"279":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"280":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"281":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"282":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"283":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"284":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"285":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"286":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"287":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"288":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"289":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"290":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"291":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"292":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"293":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"294":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"295":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"296":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"297":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"298":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"299":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"300":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"301":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"302":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"303":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"304":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"305":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"306":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"307":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"308":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"309":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"310":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"311":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"312":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"313":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"314":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"315":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"316":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"317":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"318":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":10}},"319":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}},"id":2}],"res":{"id":3,"kind":"bool"}}},"320":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5},"id":7}},"321":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"322":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"323":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":5}},"324":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"325":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":7}},"326":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"327":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"328":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"329":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"330":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"331":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"332":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"333":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"334":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"335":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"336":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":8}},"337":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":1,"kind":"int"}}],"other":{"kind":"row","fields":[{"fieldName":"1","fieldType":{"id":2,"kind":"int"}}],"other":{"kind":"empty"}}}}],"res":{"id":3,"kind":"bool"}}},"338":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7},"id":7}},"339":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"340":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"341":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"str"}},"342":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"id":3,"kind":"int"}},{"fieldName":"1","fieldType":{"id":3,"kind":"int"}}],"other":{"kind":"empty"}},"id":7}},"343":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"344":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"345":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"str"}],"res":{"id":3,"kind":"bool"}}},"346":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}},"id":6}},"347":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"348":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"349":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"350":{"typeVariables":{},"rowVariables":{},"type":{"kind":"tup","fields":{"kind":"row","fields":[{"fieldName":"0","fieldType":{"kind":"int"}},{"fieldName":"1","fieldType":{"kind":"int"}}],"other":{"kind":"empty"}}}},"351":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"352":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"353":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"354":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"355":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"356":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"357":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"358":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"359":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"360":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"361":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"362":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"363":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"364":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"365":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"366":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"367":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"368":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"369":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"370":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"371":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"372":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"373":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"374":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"375":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"376":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"377":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"378":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"379":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"380":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"381":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"382":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"383":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"384":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"385":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"386":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"387":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"388":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"389":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"390":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"391":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"392":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"393":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"394":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"395":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"396":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"397":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"398":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"399":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"400":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"401":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"402":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"403":{"typeVariables":{},"rowVariables":{},"type":{"kind":"int"}},"404":{"typeVariables":{},"rowVariables":{},"type":{"kind":"set","elem":{"id":3,"kind":"int"},"id":4}},"405":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"int"}},"406":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"407":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"str"}}},"408":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"str"},"id":8}},"409":{"typeVariables":{},"rowVariables":{},"type":{"kind":"oper","args":[{"id":3,"kind":"int"}],"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"str"},"id":8}}},"410":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"fun","arg":{"id":3,"kind":"int"},"res":{"kind":"str"},"id":8},"id":8}},"411":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"412":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"413":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"414":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"415":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"416":{"typeVariables":{},"rowVariables":{},"type":{"id":5,"kind":"bool"}},"417":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"418":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"419":{"typeVariables":{},"rowVariables":{},"type":{"kind":"fun","arg":{"id":1,"kind":"int"},"res":{"kind":"fun","arg":{"id":2,"kind":"int"},"res":{"id":3,"kind":"str"},"id":4},"id":5}},"420":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"421":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"422":{"typeVariables":{},"rowVariables":{},"type":{"id":7,"kind":"str"}},"423":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"424":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"425":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"426":{"typeVariables":{},"rowVariables":{},"type":{"id":4,"kind":"bool"}},"427":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"428":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"429":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"430":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"431":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"432":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"433":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"434":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"435":{"typeVariables":{},"rowVariables":{},"type":{"id":3,"kind":"bool"}},"436":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"437":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"438":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"439":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"440":{"typeVariables":{},"rowVariables":{},"type":{"kind":"str"}},"441":{"typeVariables":{},"rowVariables":{},"type":{"id":6,"kind":"bool"}},"442":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}},"443":{"typeVariables":{},"rowVariables":{},"type":{"id":2,"kind":"bool"}}},"effects":{"6":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"8":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"9":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"10":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"11":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"12":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"13":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"14":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"15":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"16":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"17":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"18":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"19":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"20":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"21":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"22":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"23":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"24":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"25":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"26":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"27":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"28":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"29":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"30":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"31":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"32":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"33":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"34":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"35":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"36":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"37":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"38":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"39":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"40":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"41":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"42":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"43":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"44":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"45":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"46":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"47":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"48":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"49":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"50":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"51":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"52":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"53":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"54":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"55":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"56":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"57":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"58":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"59":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"60":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"61":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"62":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"63":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"64":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"65":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"66":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"67":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"68":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"69":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"70":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"71":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"72":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"73":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"74":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"75":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"76":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"77":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"78":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"79":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"80":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"81":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"82":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"83":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"84":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"85":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"86":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"87":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"88":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"89":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"90":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"91":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"92":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"93":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"94":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"95":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"96":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"97":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"98":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"99":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"100":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"101":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"102":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"103":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"104":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"105":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"106":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"107":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"108":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"109":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"110":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"111":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"112":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"113":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"114":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v208"}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]},"effectVariables":{},"entityVariables":{}},"115":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"116":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"117":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"118":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"119":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"120":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"121":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"122":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},"effectVariables":{},"entityVariables":{}},"123":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"124":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v208"}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]},"effectVariables":{},"entityVariables":{}},"125":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"variable","name":"v208"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]},"effectVariables":{},"entityVariables":{}},"126":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v196"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v208"}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v196"},{"kind":"variable","name":"v208"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v209"}}]}}},"127":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v234"}}]},"effectVariables":{},"entityVariables":{}},"128":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v234"}}]},"effectVariables":{},"entityVariables":{}},"129":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"130":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v234"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"131":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v234"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v234"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"132":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"133":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"134":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"135":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"136":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v238"}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"137":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"138":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v240"}}]},"effectVariables":{},"entityVariables":{}},"139":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v240"}}]},"effectVariables":{},"entityVariables":{}},"140":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v237"}}]},"effectVariables":{},"entityVariables":{}},"141":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v237"}}]},"effectVariables":{},"entityVariables":{}},"142":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v238"}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"143":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v237"},{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"144":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v240"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v240"},{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}},"effectVariables":{},"entityVariables":{}},"145":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v240"},{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"146":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}},"effectVariables":{},"entityVariables":{}},"147":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]},"effectVariables":{},"entityVariables":{}},"148":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v238"}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v238"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"variable","name":"v239"}}]}}},"149":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"150":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"151":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"152":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"153":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"154":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"155":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"156":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"157":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"158":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"159":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"160":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"161":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"162":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"163":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"164":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"165":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"166":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"167":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"168":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"169":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"170":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"171":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"172":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]},"effectVariables":{},"entityVariables":{}},"173":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]},"effectVariables":{},"entityVariables":{}},"174":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v262"}}]},"effectVariables":{},"entityVariables":{}},"175":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v262"}}]},"effectVariables":{},"entityVariables":{}},"176":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"177":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v262"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"178":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"179":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"180":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"181":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"182":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"183":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]},"effectVariables":{},"entityVariables":{}},"184":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v276"}}]},"effectVariables":{},"entityVariables":{}},"185":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v276"}}]},"effectVariables":{},"entityVariables":{}},"186":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v276"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"187":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"188":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"189":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"190":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"191":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"192":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"193":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v265"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v265"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"194":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]},"effectVariables":{},"entityVariables":{}},"195":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]},"effectVariables":{},"entityVariables":{}},"196":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v292"}}]},"effectVariables":{},"entityVariables":{}},"197":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v292"}}]},"effectVariables":{},"entityVariables":{}},"198":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"199":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v292"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"200":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"201":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"202":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"203":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"204":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"205":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]},"effectVariables":{},"entityVariables":{}},"206":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v306"}}]},"effectVariables":{},"entityVariables":{}},"207":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v306"}}]},"effectVariables":{},"entityVariables":{}},"208":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v306"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"209":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"210":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"211":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"212":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"213":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"214":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"215":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v295"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v295"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"216":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]},"effectVariables":{},"entityVariables":{}},"217":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]},"effectVariables":{},"entityVariables":{}},"218":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v322"}}]},"effectVariables":{},"entityVariables":{}},"219":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v322"}}]},"effectVariables":{},"entityVariables":{}},"220":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"221":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v322"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"222":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"223":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"224":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"225":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"226":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"227":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]},"effectVariables":{},"entityVariables":{}},"228":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v336"}}]},"effectVariables":{},"entityVariables":{}},"229":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v336"}}]},"effectVariables":{},"entityVariables":{}},"230":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v336"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"231":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}},"effectVariables":{},"entityVariables":{}},"232":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"233":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"234":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"235":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"236":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"237":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v325"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v325"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]}}},"238":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"239":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"240":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"241":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"242":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"243":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"244":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"245":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"246":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"247":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"248":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"249":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"250":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"251":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"252":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"253":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"254":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"255":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v364"}}]},"effectVariables":{},"entityVariables":{}},"256":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"257":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"258":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"259":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"260":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"261":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"262":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"263":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v360"}},{"kind":"temporal","entity":{"kind":"variable","name":"v361"}}]},"effectVariables":{},"entityVariables":{}},"264":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v360"}},{"kind":"temporal","entity":{"kind":"variable","name":"v361"}}]},"effectVariables":{},"entityVariables":{}},"265":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"266":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"267":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]},"effectVariables":{},"entityVariables":{}},"268":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v364"}},{"kind":"temporal","entity":{"kind":"variable","name":"v365"}}]},"effectVariables":{},"entityVariables":{}},"269":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v360"},{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"}]}},{"kind":"temporal","entity":{"kind":"union","entities":[{"kind":"variable","name":"v361"},{"kind":"variable","name":"v365"}]}}]},"effectVariables":{},"entityVariables":{}},"270":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[]}}]}},"effectVariables":{},"entityVariables":{}},"271":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}}]},"effectVariables":{},"entityVariables":{}},"272":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"273":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"274":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"275":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v364"}}]},{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v357"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v357"},{"kind":"variable","name":"v364"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}}},"276":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"277":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"278":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"279":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"280":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"281":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"282":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"283":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"284":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"285":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"286":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"287":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"288":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"289":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"290":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"291":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"292":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"293":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"294":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"295":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"296":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"297":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"298":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"299":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"300":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"301":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"302":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"303":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"304":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"305":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"306":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"307":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"308":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"309":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"310":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"311":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"312":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"313":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"314":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"315":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"316":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"317":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"318":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"319":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"320":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"321":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"322":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"323":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"324":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"325":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"326":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"327":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"328":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"329":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"330":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"331":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"332":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"333":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"334":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"335":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v463"}}]},"effectVariables":{},"entityVariables":{}},"336":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"337":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}},"effectVariables":{},"entityVariables":{}},"338":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"339":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"340":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"341":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v463"}}]},"effectVariables":{},"entityVariables":{}},"342":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"343":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v463"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"344":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v463"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"345":{"effectVariables":{},"entityVariables":{},"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"variable","name":"v463"}}]}],"result":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"union","entities":[{"kind":"variable","name":"v463"},{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]}}},"346":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"347":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"348":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"349":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"350":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"351":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"352":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"353":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"354":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"355":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"356":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"357":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"358":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"359":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"360":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"361":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"362":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"363":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"364":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"365":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"366":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"367":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"368":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"369":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"370":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"371":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"372":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"373":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"374":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"375":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"376":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"377":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"378":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"379":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"380":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"381":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"382":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"383":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"384":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"385":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"386":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"387":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"388":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"389":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"390":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"391":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"392":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"393":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"394":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"395":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"396":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"397":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"398":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"399":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"400":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"401":{"effect":{"kind":"variable","name":"e48"},"effectVariables":{},"entityVariables":{}},"402":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"403":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"404":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"405":{"effect":{"kind":"variable","name":"e50"},"effectVariables":{},"entityVariables":{}},"406":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"407":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"408":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"409":{"effect":{"kind":"arrow","params":[{"kind":"concrete","components":[]}],"result":{"kind":"concrete","components":[]}},"effectVariables":{},"entityVariables":{}},"410":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"411":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"412":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"413":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"414":{"effect":{"kind":"concrete","components":[{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"415":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"416":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"417":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"418":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"419":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"420":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"421":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"422":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"423":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"424":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"425":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"426":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"nextTurn","reference":8},{"name":"board","reference":6}]}},{"kind":"update","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6},{"name":"nextTurn","reference":8}]}}]},"effectVariables":{},"entityVariables":{}},"427":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"428":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"429":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"430":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"431":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"432":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"433":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"434":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"435":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"436":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"437":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"438":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"439":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"440":{"effect":{"kind":"concrete","components":[]},"effectVariables":{},"entityVariables":{}},"441":{"effect":{"kind":"concrete","components":[{"kind":"read","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"442":{"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}},"443":{"effect":{"kind":"concrete","components":[{"kind":"temporal","entity":{"kind":"concrete","stateVariables":[{"name":"board","reference":6}]}}]},"effectVariables":{},"entityVariables":{}}}}
\ No newline at end of file
From 8fe73797c2bda72c232629a874c03bc150088e2d Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Wed, 29 Nov 2023 19:24:52 -0500
Subject: [PATCH 13/14] Add TODO
---
.../forsyte/apalache/io/quint/QuintTypeConverter.scala | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
index 7ca774bd20..ba0290e0c1 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/QuintTypeConverter.scala
@@ -79,10 +79,11 @@ private class QuintTypeConverter extends LazyLogging {
}
val convert: QuintType => TlaType1 = {
- case QuintBoolT() => BoolT1
- case QuintIntT() => IntT1
- case QuintStrT() => StrT1
- case QuintConstT(name) => ConstT1(name)
+ case QuintBoolT() => BoolT1
+ case QuintIntT() => IntT1
+ case QuintStrT() => StrT1
+ case QuintConstT(name) =>
+ ConstT1(name) // TODO: Raise error if we hit this. See https://github.com/informalsystems/apalache/issues/2788
case QuintVarT(name) => VarT1(getVarNo(name))
case QuintSetT(elem) => SetT1(convert(elem))
case QuintSeqT(elem) => SeqT1(convert(elem))
From 2f52f8e6a35cb6d7c01122c517095a64e37f6057 Mon Sep 17 00:00:00 2001
From: Shon Feder
Date: Thu, 30 Nov 2023 19:38:42 -0500
Subject: [PATCH 14/14] Update
tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
Co-authored-by: Gabriela Moreira
---
.../src/main/scala/at/forsyte/apalache/io/quint/Quint.scala | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
index 6450c35926..fa43440e7e 100644
--- a/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
+++ b/tla-io/src/main/scala/at/forsyte/apalache/io/quint/Quint.scala
@@ -422,9 +422,9 @@ class Quint(quintOutput: QuintOutput) {
//
// This is converted into the following Apalache expression, using Apalache's variant operators:
//
- // CASE VariantTag(expr) = "F1" -> elim_1(VariantGetUnsafe(expr))
+ // CASE VariantTag(expr) = "F1" -> elim_1(VariantGetUnsafe("F1", expr))
// [] ...
- // [] VariantTag(expr) = "Fn" -> elim_n(VariantGetUnsafe(expr))
+ // [] VariantTag(expr) = "Fn" -> elim_n(VariantGetUnsafe("Fn", expr))
//
// This ensures that we will apply the proper eliminator to the expected value
// associated with whatever tag is carried by the variant `expr`.