from typing import Any, Literal
from sympy.combinatorics.permutations import Perm
from sympy.core.basic import Basic
def dummy_sgs(dummies, sym, n) -> list[Any]:
    ...

def transversal2coset(size, base, transversal) -> list[Any]:
    ...

def double_coset_can_rep(dummies, sym, b_S, sgens, S_transversals, g) -> Literal[0]:
    ...

def canonical_free(base, gens, g, num_free) -> list[Any]:
    ...

def canonicalize(g, dummies, msym, *v) -> list[Any] | Literal[0]:
    ...

def perm_af_direct_product(gens1, gens2, signed=...) -> list[list[Any]]:
    ...

def bsgs_direct_product(base1, gens1, base2, gens2, signed=...) -> tuple[list[Any], list[Perm]]:
    ...

def get_symmetric_group_sgs(n, antisym=...) -> tuple[list[Any], list[Perm]] | tuple[list[int], list[Perm]]:
    ...

riemann_bsgs = ...
def get_transversals(base, gens) -> list[Any] | list[dict[Any, Any]]:
    ...

def get_minimal_bsgs(base, gens) -> tuple[Any | list[Any], list[Basic] | Any | list[Basic | Any]] | None:
    ...

def tensor_gens(base, gens, list_free_indices, sym=...) -> tuple[Any, list[Any], list[Perm]] | tuple[Any, Any | list[Any], list[Perm] | list[Any | Perm]] | tuple[Any, list[Any], list[Perm] | list[Any | Perm]]:
    ...

def gens_products(*v) -> tuple[Any | None, Any | list[Any], list[list[int]] | list[Perm | Any]]:
    ...

