def replace_list(strats): """ Find subclass verification and alter its perms_to_check variable. """ res = [] for strategy in strats: if isinstance(strategy, strat.SubclassVerificationFactory): printed_log = False if strategy.perms_to_check is None: new_perms_to_check = set() cell_bases = set( tuple(obs) for obs, _ in start_tiling.cell_basis().values() ) max_length = ( max(max(len(b) for b in basis) for basis in cell_bases) - 1 ) perm_gen = Perm.up_to_length(max_length) for perm in perm_gen: if len(perm) == 0: continue if any(perm.avoids(*basis) for basis in cell_bases): new_perms_to_check.add(perm) res.append(strategy.change_perms(new_perms_to_check)) if start_tiling.dimensions == (1, 1): logger.info( "SubclassVerification set up to check the proper " "principal subclasses of Av(%s)", ", ".join(map(str, cell_bases.pop())), ) printed_log = True if not printed_log: logger.info( "SubclassVerification set up to check the subclasses: " "Av(%s)", "), Av(".join(map(str, strategy.perms_to_check)), ) else: res.append(strategy) return res
ignoreparent(ElementaryVerificationStrategy) + ignoreparent(LocalVerificationStrategy) + ignoreparent(MonotoneTreeVerificationStrategy) + [ObstructionTransitivityFactory()] + [ OneByOneVerificationStrategy( basis=[Perm((0, 1, 2)), Perm((2, 1, 0, 3))], ignore_parent=True), OneByOneVerificationStrategy( basis=[Perm((2, 1, 0, 3))], ignore_parent=False, symmetry=True), OneByOneVerificationStrategy( basis=[], ignore_parent=False, symmetry=False), OneByOneVerificationStrategy( basis=None, ignore_parent=False, symmetry=False), ] + [ SubclassVerificationFactory( perms_to_check=[Perm((0, 1, 2)), Perm((1, 0))]), SubclassVerificationFactory(perms_to_check=list(Perm.up_to_length(3))), SubclassVerificationStrategy( subclass_basis=[Perm((0, 1, 2)), Perm((1, 0)) ], ignore_parent=True), SubclassVerificationStrategy(subclass_basis=list(Perm.up_to_length(3)), ignore_parent=False), ] + pointonly_partial_ignoreparent_dirs(PatternPlacementFactory) + ignoreparent(RequirementCorroborationFactory) + gps_ignoreparent(RequirementInsertionStrategy) + gps_ignoreparent_limited(RequirementInsertionFactory) + gps_indices_direction_owncol_ownrow_ignoreparent_includeempty( RequirementPlacementStrategy) + maxreqlen_extrabasis_ignoreparent_maxnumreq(RootInsertionFactory) + row_col_partial_ignoreparent_direction(RowAndColumnPlacementFactory) + use_symmetries(SlidingFactory) + sliding_strategy_arguments(SlidingStrategy) +