pub fn solve_zielonka<G: PG>(game: &G, compute_strategy: bool) -> ([Set; 2], Option<[Strategy; 2]>) {
debug_assert!(S0.is_some() || S1.is_some(), "At least one strategy should be computed if compute_strategy is true");
/// If true, also computes the winning strategy for both players. Otherwise, returns `None` strategies.
/// > Oliver Friedmann. Recursive algorithm for parity games requires exponential time. RAIRO Theor. Informatics Appl. 45(4): 449-457 (2011) [DOI](https://doi.org/10.1051/ita/2011124).
fn zielonka_rec(&mut self, V: Set, depth: usize) -> (Set, Option<Strategy>, Set, Option<Strategy>) {
S1_alpha = if self.compute_strategy { self.union_strategies(S1_alpha, A_strategy).map_or_else(
S2_not_alpha = self.union_strategies(self.union_strategies(S2_not_alpha, B_strategy), S1_not_alpha);
fn union_strategies(&self, strategy1: Option<Strategy>, strategy2: Option<Strategy>) -> Option<Strategy> {