We present a causality-based algorithm for solving two-player reachability games represented by logical constraints. These games are a useful formalism to model a wide array of problems arising, e.g., in program synthesis. Our technique for solving these games is based on the notion of subgoals, which are slices of the game that the reachability player necessarily needs to pass through in order to reach the goal. We use Craig interpolation to identify these necessary sets of moves and recursively slice the game along these subgoals. Our approach allows us to infer winning strategies that are structured along the subgoals. If the game is won by the reachability player, this is a strategy that progresses through the subgoals towards the final goal; if the game is won by the safety player, it is a permissive strategy that completely avoids a single subgoal. We evaluate our prototype implementation on a range of different games. On multiple benchmark families, our prototype scales dramatically better than previously available tools.
翻译:我们提出一种基于因果关系的算法,以解决由逻辑制约代表的双人可达性游戏。这些游戏是一种有用的形式主义,可以模拟产生的各种问题,例如程序合成中的问题。我们解决这些游戏的技术基于子目标的概念,它们是可达性玩家为了达到目标而必须经过的游戏的片段。我们用克雷格的内插法来辨别这些必要的移动组合,并沿这些子目标循环切除游戏。我们的方法使我们能够推算按照子目标结构构建的获胜战略。如果该游戏由可达性玩家赢得,这是通过子目标朝着最终目标前进的战略;如果该游戏由安全玩家赢得,则是一种完全避免单一子目标的宽松战略。我们用不同的游戏范围来评估我们的原型执行。在多个基准家庭,我们的原型规模比以前可用的工具要好得多。