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`.