def __init__(self, cartan_type): """ Construct this Coxeter group as a Sage permutation group, by fetching the permutation representation of the generators from Chevie's database. TESTS:: sage: from sage.combinat.root_system.coxeter_group import CoxeterGroupAsPermutationGroup sage: W = CoxeterGroupAsPermutationGroup(CartanType(["H",3])) # optional - chevie sage: TestSuite(W).run() # optional - chevie """ assert cartan_type.is_finite() assert cartan_type.is_irreducible() self._semi_simple_rank = cartan_type.n from sage.interfaces.gap3 import gap3 gap3._start() gap3.load_package("chevie") self._gap_group = gap3('CoxeterGroup("%s",%s)'%(cartan_type.letter,cartan_type.n)) # Following #9032, x.N is an alias for x.numerical_approx in every Sage object ... N = self._gap_group.__getattr__("N").sage() generators = [str(x) for x in self._gap_group.generators] self._is_positive_root = [None] + [ True ] * N + [False]*N PermutationGroup_generic.__init__(self, gens = generators, category = Category.join([FinitePermutationGroups(), FiniteCoxeterGroups()]))
def is_chevie_available(): r""" Tests whether the GAP3 Chevie package is available EXAMPLES:: sage: from sage.combinat.root_system.coxeter_group import is_chevie_available sage: is_chevie_available() # random False sage: is_chevie_available() in [True, False] True """ try: from sage.interfaces.gap3 import gap3 gap3._start() gap3.load_package("chevie") return True except Exception: return False
def is_chevie_available(): r""" Test whether the GAP3 Chevie package is available. EXAMPLES:: sage: from sage.combinat.root_system.reflection_group_real import is_chevie_available sage: is_chevie_available() # random False sage: is_chevie_available() in [True, False] True """ try: from sage.interfaces.gap3 import gap3 gap3._start() gap3.load_package("chevie") return True except Exception: return False