def coxeter_matrix(t): """ Returns the Coxeter matrix of type t. EXAMPLES:: sage: coxeter_matrix(['A', 4]) [1 3 2 2] [3 1 3 2] [2 3 1 3] [2 2 3 1] sage: coxeter_matrix(['B', 4]) [1 3 2 2] [3 1 3 2] [2 3 1 4] [2 2 4 1] sage: coxeter_matrix(['C', 4]) [1 3 2 2] [3 1 3 2] [2 3 1 4] [2 2 4 1] sage: coxeter_matrix(['D', 4]) [1 3 2 2] [3 1 3 3] [2 3 1 2] [2 3 2 1] :: sage: coxeter_matrix(['E', 6]) [1 2 3 2 2 2] [2 1 2 3 2 2] [3 2 1 3 2 2] [2 3 3 1 3 2] [2 2 2 3 1 3] [2 2 2 2 3 1] :: sage: coxeter_matrix(['F', 4]) [1 3 2 2] [3 1 4 2] [2 4 1 3] [2 2 3 1] :: sage: coxeter_matrix(['G', 2]) [1 6] [6 1] """ ct = CartanType(t) cf = coxeter_matrix_as_function(ct) index_set = ct.index_set() MS = MatrixSpace(ZZ, len(index_set)) m = MS(0) for i in range(len(index_set)): for j in range(len(index_set)): m[i, j] = cf(index_set[i], index_set[j]) return m
def coxeter_matrix_as_function(t): """ Returns the Coxeter matrix, as a function INPUT: - ``t`` -- a Cartan type EXAMPLES:: sage: from sage.combinat.root_system.coxeter_matrix import coxeter_matrix_as_function sage: f = coxeter_matrix_as_function(['A',4]) sage: matrix([[f(i,j) for j in range(1,5)] for i in range(1,5)]) [1 3 2 2] [3 1 3 2] [2 3 1 3] [2 2 3 1] """ t = CartanType(t) m = t.coxeter_matrix() index_set = t.index_set() reverse = dict((index_set[i], i) for i in range(len(index_set))) return lambda i,j: m[reverse[i], reverse[j]]
def coxeter_matrix_as_function(t): """ Returns the coxeter matrix, as a function INPUT: - ``t`` -- a Cartan type EXAMPLES:: sage: from sage.combinat.root_system.coxeter_matrix import coxeter_matrix_as_function sage: f = coxeter_matrix_as_function(['A',4]) sage: matrix([[f(i,j) for j in range(1,5)] for i in range(1,5)]) [1 3 2 2] [3 1 3 2] [2 3 1 3] [2 2 3 1] """ t = CartanType(t) m = t.coxeter_matrix() index_set = t.index_set() reverse = dict((index_set[i], i) for i in range(len(index_set))) return lambda i,j: m[reverse[i], reverse[j]]