Skip to content

Instantly share code, notes, and snippets.

@amakelov
Created March 31, 2012 22:48
Show Gist options
  • Save amakelov/2269287 to your computer and use it in GitHub Desktop.
Save amakelov/2269287 to your computer and use it in GitHub Desktop.
from operator import add
from operator import mul
class Representation:
character = []
name = None
def __init__(self, character, name = None):
self.character = character
self.name = name
def __add__(self, other):
new_character = map(add, self.character, other.character)
return Representation(new_character)
def __mul__(self,other):
new_character = map(mul, self.character,other.character)
return Representation(new_character)
class CharacterTable:
representations = []
conjClasses = []
is_Full = None
groupOrder = None
def __init__(self, conjClasses, list_of_characters=None):
self.conjClasses = conjClasses
self.groupOrder = sum(conjClasses)
def append(self, rep):
if self.is_Full or len(self.conjClasses) == len(self.representations):
self.is_Full = True
print 'Character table is full!'
else:
self.representations.append(rep)
def inner(self, char1,char2):
return sum(map(mul, map(mul,self.conjClasses,char1),char2))/self.groupOrder
def erase(self, name = None):
if name is None:
self.representations = []
else:
self.representations = [x for x in self.representations if x[0] != name]
def decompose(self,rep):
for irrep in self.representations:
print self.inner(rep.character, irrep[1]), '\n'
T = CharacterTable([1,3,2])
a = Representation([1,1,1],'triv')
b = Representation([1,-1,1], 'alternating')
c = Representation([2,0,-1], 'standard')
T.append(a)
T.append(b)
T.append(c)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment