123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222 |
- module symmetry;
- %
- % ----------------------------------------------------------
- % Symmetry Package
- % ----------------------------------------------------------
- %
- % Author : Karin Gatermann
- % Konrad-Zuse-Zentrum fuer
- % Informationstechnik Berlin
- % Heilbronner Str. 10
- % W-1000 Berlin 31
- % Germany
- % Email: Gatermann@sc.ZIB-Berlin.de
- %
- % Version 1.0 9. December 1991
- %
- % Abstract:
- % ---------
- % This program is an implementation of the algorithm
- % for computation of symmetry adapted bases from the
- % theory of linear representations of finite grous.
- % Projections for the computation of block diagonal form
- % of matrices are computed having the symmetry of a group.
- %
- %
- % REDUCE 3.4 is required.
- %
- % References:
- % -----------
- % J.-P. Serre, Linear Representations of Finite Groups.
- % Springer, New York (1977).
- % E. Stiefel, A. F{\"a}ssler, Gruppentheoretische
- % Methoden und ihre Anwendung. Teubner, Stuttgart (1979).
- % (English translation to appear by Birkh\"auser (1992)).
- %
- % Keywords:
- % --------
- % linear representations, symmetry adapted bases,
- % matrix with the symmetry of a group,
- % block diagonalization
- %
- % symmetry.red
- % definition of available algebraic operators
- % To build a fast loading version of this package, the following
- % sequence of commands should be used:
- % faslout "symmetry";
- % in "symmetry.red"$
- % faslend;
- load_package matrix;
- % CREATE!-PACKAGE('(symmetry
- % symatvec
- % symcheck
- % symchrep
- % symhandl
- % sympatch
- % symwork
- % symdata1
- % symdata2),
- % '(contrib symmetry));
- algebraic(operator @);
- algebraic( infix @);
- algebraic( precedence @,*);
- symbolic procedure give!_groups (u);
- % prints the elements of the abstract group
- begin
- return mk!+outer!+list(get!*available!*groups());
- end;
- put('availablegroups,'psopfn,'give!_groups);
- symbolic procedure print!_group (groupname);
- % prints the elements of the abstract group
- begin
- scalar g;
- if length(groupname)>1 then rederr("too many arguments");
- if length(groupname)<1 then rederr("group as argument missing");
- g:=reval car groupname;
- if available!*p(g) then
- return alg!:print!:group(g);
- end;
- put('printgroup,'psopfn,'print!_group);
- symbolic procedure print!_generators (groupname);
- % prints the generating elements of the abstract group
- begin
- scalar g;
- if length(groupname)>1 then rederr("too many arguments");
- if length(groupname)<1 then rederr("group as argument missing");
- g:=reval car groupname;
- if available!*p(g) then
- return alg!:generators(g);
- end;
- put('generators,'psopfn,'print!_generators);
- symbolic procedure character!_table (groupname);
- % prints the characters of the group
- begin
- scalar g;
- if length(groupname)>1 then rederr("too many arguments");
- g:=reval car groupname;
- if available!*p(g) then
- return alg!:characters(g);
- end;
- put('charactertable,'psopfn,'character!_table);
- symbolic procedure character!_nr (groupname);
- % prints the characters of the group
- begin
- scalar group,nr,char1;
- if length(groupname)>2 then rederr("too many arguments");
- if length(groupname)<2 then rederr("group or number missing");
- group:=reval car groupname;
- nr:=reval cadr groupname;
- if not(available!*p(group)) then
- rederr("no information upon group available");
- if not(irr!:nr!:p(nr,group)) then
- rederr("no character with this number");
- if !*complex then
- char1:=get!*complex!*character(group,nr) else
- char1:=get!*real!*character(group,nr);
- return alg!:print!:character(char1);
- end;
- put('characternr,'psopfn,'character!_nr);
- symbolic procedure irreducible!_rep!_table (groupname);
- % prints the irreducible representations of the group
- begin
- scalar g;
- if length(groupname)>1 then rederr("too many arguments");
- if length(groupname)<1 then rederr("group missing");
- g:=reval car groupname;
- if available!*p(g) then
- return alg!:irr!:reps(g);
- end;
- put('irreduciblereptable,'psopfn,'irreducible!_rep!_table);
- symbolic procedure irreducible!_rep!_nr (groupname);
- % prints the irreducible representations of the group
- begin
- scalar g,nr;
- if length(groupname)>2 then rederr("too many arguments");
- if length(groupname)<2 then rederr("group or number missing");
- g:=reval car groupname;
- if not(available!*p(g)) then
- rederr("no information upon group available");
- nr:=reval cadr groupname;
- if not(irr!:nr!:p(nr,g)) then
- rederr("no irreducible representation with this number");
- if !*complex then
- return
- alg!:print!:rep(get!*complex!*irreducible!*rep(g,nr))
- else return
- alg!:print!:rep(get!*real!*irreducible!*rep(g,nr));
- end;
- put('irreduciblerepnr,'psopfn,'irreducible!_rep!_nr);
- symbolic procedure canonical!_decomposition(representation);
- % computes the canonical decomposition of the given representation
- begin
- scalar repr;
- if length(representation)>1 then rederr("too many arguments");
- repr:=reval car representation;
- if representation!:p(repr) then
- return alg!:can!:decomp(mk!_internal(repr));
- end;
- put('canonicaldecomposition,'psopfn,'canonical!_decomposition);
- symbolic procedure sym!_character(representation);
- % computes the character of the given representation
- begin
- scalar repr;
- if length(representation)>1 then rederr("too many arguments");
- if length(representation)<1 then
- rederr("representation list missing");
- repr:=reval car representation;
- if representation!:p(repr) then
- return alg!:print!:character(mk!_character(mk!_internal(repr))) else
- rederr("that's no representation");
- end;
- put('character,'psopfn,'sym!_character);
- symbolic procedure symmetry!_adapted!_basis (arg);
- % computes the first part of the symmetry adapted bases of
- % the nr-th component
- % arg = (representation,nr)
- begin
- scalar repr,nr,res;
- if length(arg)>2 then rederr("too many arguments");
- if length(arg)<2 then rederr("group or number missing");
- repr:=reval car arg;
- nr:=reval cadr arg;
- if representation!:p(repr) then
- repr:=mk!_internal(repr) else
- rederr("that's no representation");
- if irr!:nr!:p(nr,get!_group!_in(repr)) then
- <<
- if not(null(mk!_multiplicity(repr,nr))) then
- res:= mk!+outer!+mat(mk!_part!_sym!_all(repr,nr))
- else
- res:=nil;
- >> else
- rederr("wrong number of an irreducible representation");
- return res;
- end;
- put('symmetrybasis,'psopfn,'symmetry!_adapted!_basis);
- symbolic procedure symmetry!_adapted!_basis!_part (arg);
- % computes the first part of the symmetry adapted bases
- % of the nr-th component
- % arg = (representation,nr)
- begin
- scalar repr,nr,res;
- if length(arg)>2 then rederr("too many arguments");
- if length(arg)<2 then rederr("group or number missing");
- repr:=reval car arg;
- nr:=reval cadr arg;
- if representation!:p(repr) then
- repr:=mk!_internal(repr) else
- rederr("that's no representation");
- if irr!:nr!:p(nr,get!_group!_in(repr)) then
- <<
- if not(null(mk!_multiplicity(repr,nr))) then
- res:= mk!+outer!+mat(mk!_part!_sym1(repr,nr))
- else
- res:=nil;
- >> else
- rederr("wrong number of an irreducible representation");
- return res;
- end;
- put('symmetrybasispart,'psopfn,'symmetry!_adapted!_basis!_part);
- symbolic procedure symmetry!_bases (representation);
- % computes the complete symmetry adapted basis
- begin
- scalar repr,res;
- if length(representation)>1 then rederr("too many arguments");
- if length(representation)<1 then rederr("representation missing");
- repr:=reval car representation;
- if representation!:p(repr) then
- <<
- res:= mk!+outer!+mat(mk!_sym!_basis(mk!_internal(repr)));
- >> else
- rederr("that's no representation");
- return res;
- end;
- put('allsymmetrybases,'psopfn,'symmetry!_bases);
- symbolic procedure sym!_diagonalize (arg);
- % diagonalizes a matrix with respect to a given representation
- begin
- scalar repr,matrix1;
- if (length(arg)>2) then rederr("too many arguments");
- if (length(arg)<2) then rederr("representation or matrix missing");
- repr:=reval cadr arg;
- matrix1:=reval (car arg);
- if alg!+matrix!+p(matrix1) then
- matrix1:=mk!+inner!+mat(matrix1)
- else
- rederr("first argument must be a matrix");
- if representation!:p(repr) then
- repr:=mk!_internal(repr) else
- rederr("that's no representation");
- if symmetry!:p(matrix1,repr) then
- return mk!+outer!+mat(mk!_diagonal(
- matrix1,repr)) else
- rederr("matrix has not the symmetry of this representation");
- end;
- put('diagonalize,'psopfn,'sym!_diagonalize);
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % function to add new groups to the database by the user
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure set!_generators!_group (arg);
- % a group is generated by some elements
- begin
- scalar group, generators,relations,rel;
- if length(arg)>3 then rederr("too many arguments");
- if length(arg)<2 then
- rederr("group identifier or generator list missing");
- group:=reval car arg;
- generators:=reval cadr arg;
- if length(arg)=3 then
- relations:=reval caddr arg else
- relations:=nil;
- if not(idp(group)) then
- rederr("first argument must be a group identifier");
- generators:=mk!+inner!+list(generators);
- if not(identifier!:list!:p(generators)) then
- rederr("second argument must be a list of generator identifiers")
- else set!*generators(group,generators);
- relations:=mk!_relation!_list(relations);
- for each rel in relations do
- if not(relation!:list!:p(group,rel)) then
- rederr("equations in generators are demanded");
- set!*relations(group,relations);
- writepri("setgenerators finished",'only);
- end;
- put('setgenerators,'psopfn,'set!_generators!_group);
- symbolic procedure set!_elements(arg);
- % each element<>id of a group has a representation
- % as product of generators
- % the identity is called id
- begin
- scalar elemreps,replist,elems,group;
- if length(arg)>2 then rederr("too many arguments");
- if length(arg)<2 then
- rederr("missing group or list with group elements with generators ");
- group:=reval car arg;
- if not(idp(group)) then
- rederr("first argument must be a group identifier");
- elemreps:=reval cadr arg;
- elemreps:=mk!_relation!_list(elemreps);
- for each replist in elemreps do
- if not(generator!:list!:p(group,cadr replist)) then
- rederr("group elements should be represented in generators");
- for each replist in elemreps do
- if not((length(car replist)=1) and idp(caar replist)) then
- rederr("first must be one group element");
- elems:= for each replist in elemreps collect caar replist;
- elems:=append(list('id),elems);
- set!*elems!*group(group,elems);
- set!*elemasgen(group,elemreps);
- writepri("setelements finished",'only);
- end;
- put('setelements,'psopfn,'set!_elements);
- symbolic procedure set!_group!_table (arg);
- % a group table gives the result of the product of two elements
- begin
- scalar table,group,z,s;
- if length(arg)>2 then rederr("too many arguments");
- if length(arg)<2 then
- rederr("missing group or group table as a matrix ");
- group:=reval car arg;
- if not(idp(group)) then
- rederr("first argument must be a group identifier");
- table:=reval cadr arg;
- if alg!+matrix!+p(table) then
- table:=mk!+inner!+mat(table);
- table:=for each z in table collect
- for each s in z collect prepsq(s);
- if group!:table!:p(group,table) then
- <<
- set!*grouptable(group,table);
- set!*inverse(group,mk!*inverse!*list(table));
- set!*group(group,mk!*equiclasses(table));
- set!*storing(group);
- >> else rederr("table is not a group table");
- writepri("setgrouptable finished",'only);
- end;
- put('setgrouptable,'psopfn,'set!_group!_table);
- symbolic procedure set!_real!_rep(arg);
- % store the real irreducible representations
- begin
- scalar replist,type;
- if length(arg)>2 then rederr("too many arguments");
- if length(arg)<2 then
- rederr("representation or type missing");
- replist:=reval car arg;
- type:=reval cadr arg;
- if (not(type= 'realtype) and not(type = 'complextype)) then
- rederr("only real or complex types possible");
- if get!*order(get!_group!_out(replist))=0 then
- rederr("elements of the groups must be set first");
- if representation!:p(replist) then
- replist:=(mk!_internal(replist));
- set!*representation(get!_group!_in(replist),
- append(list(type),cdr replist),'real);
- writepri("Rsetrepresentation finished",'only);
- end;
- put('Rsetrepresentation,'psopfn,'set!_real!_rep);
- symbolic procedure set!_complex!_rep(arg);
- % store the complex irreducible representations
- begin
- scalar replist;
- if length(arg)>1 then rederr("too many arguments");
- if length(arg)<1 then
- rederr("representation missing");
- replist:=reval car arg;
- if get!*order(get!_group!_out(replist))=0 then
- rederr("elements of the groups must be set first");
- if representation!:p(replist) then
- replist:=(mk!_internal(replist));
- set!*representation(get!_group!_in(replist),cdr replist,'complex);
- writepri("Csetrepresentation finished",'only);
- end;
- put('Csetrepresentation,'psopfn,'set!_complex!_rep);
- symbolic procedure mk!_available(arg);
- % group is only then made available, if all information was given
- begin
- scalar group;
- if length(arg)>1 then rederr("too many arguments");
- if length(arg)<1 then
- rederr("group identifier missing");
- group:=reval car arg;
- if check!:complete!:rep!:p(group) then
- set!*available(group);
- writepri("setavailable finished",'only);
- end;
- put('setavailable,'psopfn,'mk!_available);
- symbolic procedure update!_new!_group (arg);
- % stores the user defined new abstract group in a file
- begin
- scalar group;
- if length(arg)>2 then rederr("too many arguments");
- if length(arg)<2 then
- rederr("group or filename missing");
- group:=reval car arg;
- if available!*p(group) then write!:to!:file(group,reval cadr arg);
- writepri("storegroup finished",'only);
- end;
- put('storegroup,'psopfn,'update!_new!_group);
- procedure loadgroups(fname);
- % loads abstract groups from a file which was created from a user
- % by newgroup and updategroup
- begin
- in fname;
- write"group loaded";
- end;
- endmodule;
- module symatvec;
- % Symmetry
- % Author : Karin Gatermann
- % Konrad-Zuse-Zentrum fuer
- % Informationstechnik Berlin
- % Heilbronner Str. 10
- % W-1000 Berlin 31
- % Germany
- % Email: Gatermann@sc.ZIB-Berlin.de
- % symatvec.red
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions for matrix vector operations
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure gen!+can!+bas(dimension);
- % returns the canonical basis of R^dimension as a vector list
- begin
- scalar eins,nullsq,i,j,ll;
- eins:=(1 ./ 1);
- nullsq:=(nil ./ 1);
- ll:= for i:=1:dimension collect
- for j:=1:dimension collect
- if i=j then eins else nullsq;
- return ll;
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % matrix functions
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure alg!+matrix!+p(mat1);
- % returns true if the matrix is a matrix from algebraic level
- begin
- scalar len,elem;
- if length(mat1)<1 then rederr("should be a matrix");
- if not(car (mat1) = 'mat) then rederr("should be a matrix");
- mat1:=cdr mat1;
- if length(mat1)<1 then rederr("should be a matrix");
- len:=length(car mat1);
- for each elem in cdr mat1 do
- if not(length(elem)=len) then rederr("should be a matrix");
- return t;
- end;
- symbolic procedure matrix!+p(mat1);
- % returns true if the matrix is a matrix in internal structure
- begin
- scalar dimension,z,res;
- if length(mat1)<1 then return nil;
- dimension:=length(car mat1);
- res:=t;
- for each z in cdr mat1 do
- if not(dimension = length(z)) then res:=nil;
- return res;
- end;
- symbolic procedure squared!+matrix!+p(mat1);
- % returns true if the matrix is a matrix in internal structure
- begin
- if (matrix!+p(mat1) and (get!+row!+nr(mat1) = get!+col!+nr(mat1)))
- then return t;
- end;
- symbolic procedure equal!+matrices!+p(mat1,mat2);
- % returns true if the matrices are equal ( internal structure)
- begin
- scalar s,z,helpp,mathelp,sum,rulesum,rule1,rule2;
- if (same!+dim!+squared!+p(mat1,mat2)) then
- <<
- mathelp:=
- mk!+mat!+plus!+mat(mat1,
- mk!+scal!+mult!+mat((-1 ./ 1),mat2));
- sum:=(nil ./ 1);
- for each z in mathelp do
- for each s in z do
- if !*complex then
- sum:=addsq(sum,multsq(s,mk!+conjugate!+sq s)) else
- sum:=addsq(sum,multsq(s,s));
- % print!-sq(sum);
- rulesum:=change!+sq!+to!+algnull(sum);
- if rulesum = 0 then helpp:=t else helpp:=nil;
- % print!-sq(simp rulesum);
- % if null(numr(simp prepsq(sum))) then helpp:=t
- % else helpp:=nil;
- >> else helpp:=nil;
- return helpp;
- end;
- symbolic procedure get!+row!+nr(mat1);
- % returns the number of rows
- begin
- return length(mat1);
- end;
- symbolic procedure get!+col!+nr(mat1);
- % returns the number of columns
- begin
- return length(car mat1);
- end;
- symbolic procedure get!+mat!+entry(mat1,z,s);
- % returns the matrix element in row z and column s
- begin
- return nth(nth(mat1,z),s);
- end;
- symbolic procedure same!+dim!+squared!+p(mat1,mat2);
- % returns true if the matrices are both squared matrices
- % of the same dimension
- % (internal structur)
- begin
- if (squared!+matrix!+p(mat1) and squared!+matrix!+p(mat2) and
- (get!+row!+nr(mat1) = get!+row!+nr(mat1)))
- then return t;
- end;
- symbolic procedure mk!+transpose!+matrix(mat1);
- % returns the transposed matrix (internal structure)
- begin
- scalar z,s,tpmat;
- if not(matrix!+p(mat1)) then rederr("no matrix in transpose");
- tpmat:=for z:=1:get!+col!+nr(mat1) collect
- for s:=1:get!+row!+nr(mat1) collect
- get!+mat!+entry(mat1,s,z);
- return tpmat;
- end;
- symbolic procedure mk!+conjugate!+matrix(mat1);
- % returns the matrix with conjugate elements (internal structure)
- begin
- scalar z,s,tpmat;
- if not(matrix!+p(mat1)) then rederr("no matrix in conjugate matrix");
- tpmat:=for z:=1:get!+row!+nr(mat1) collect
- for s:=1:get!+col!+nr(mat1) collect
- mk!+conjugate!+sq(get!+mat!+entry(mat1,z,s));
- return tpmat;
- end;
- symbolic procedure mk!+hermitean!+matrix(mat1);
- % returns the transposed matrix (internal structure)
- begin
- if !*complex then
- return mk!+conjugate!+matrix(mk!+transpose!+matrix(mat1)) else
- return mk!+transpose!+matrix(mat1);
- end;
- symbolic procedure unitarian!+p(mat1);
- % returns true if matrix is orthogonal or unitarian resp.
- begin
- scalar mathermit,unitmat;
- mathermit:=mk!+mat!+mult!+mat(mk!+hermitean!+matrix(mat1),mat1);
- unitmat:=mk!+unit!+mat(get!+row!+nr(mat1));
- if equal!+matrices!+p(mathermit,unitmat) then return t;
- end;
- symbolic procedure mk!+mat!+mult!+mat(mat1,mat2);
- % returns a matrix= matrix1*matrix2 (internal structure)
- begin
- scalar dims1,dimz1,dims2,s,z,res,sum,k;
- if not(matrix!+p(mat1)) then rederr("no matrix in mult");
- if not(matrix!+p(mat2)) then rederr("no matrix in mult");
- dims1:=get!+col!+nr(mat1);
- dimz1:=get!+row!+nr(mat1);
- dims2:=get!+col!+nr( mat2);
- if not(dims1 = get!+row!+nr(mat2)) then
- rederr("matrices can not be multiplied");
- res:=for z:=1:dimz1 collect
- for s:=1:dims2 collect
- <<
- sum:=(nil ./ 1);
- for k:=1:dims1 do
- sum:=addsq(sum,
- multsq(
- get!+mat!+entry(mat1,z,k),
- get!+mat!+entry(mat2,k,s)
- )
- );
- sum:=subs2 sum where !*sub2=t;
- sum
- >>;
- return res;
- end;
- symbolic procedure mk!+mat!+plus!+mat(mat1,mat2);
- % returns a matrix= matrix1 + matrix2 (internal structure)
- begin
- scalar dims,dimz,s,z,res,sum;
- if not(matrix!+p(mat1)) then rederr("no matrix in add");
- if not(matrix!+p(mat2)) then rederr("no matrix in add");
- dims:=get!+col!+nr(mat1);
- dimz:=get!+row!+nr(mat1);
- if not(dims = get!+col!+nr(mat2)) then
- rederr("wrong dimensions in add");
- if not(dimz = get!+row!+nr(mat2)) then
- rederr("wrong dimensions in add");
- res:=for z:=1:dimz collect
- for s:=1:dims collect
- <<
- sum:=addsq(
- get!+mat!+entry(mat1,z,s),
- get!+mat!+entry(mat2,z,s)
- );
- sum:=subs2 sum where !*sub2=t;
- sum
- >>;
- return res;
- end;
- symbolic procedure mk!+mat!*mat!*mat(mat1,mat2,mat3);
- % returns a matrix= matrix1*matrix2*matrix3 (internal structure)
- begin
- scalar res;
- res:= mk!+mat!+mult!+mat(mat1,mat2);
- return mk!+mat!+mult!+mat(res,mat3);
- end;
- symbolic procedure add!+two!+mats(mat1,mat2);
- % returns a matrix=( matrix1, matrix2 )(internal structure)
- begin
- scalar dimz,z,res;
- if not(matrix!+p(mat1)) then rederr("no matrix in add");
- if not(matrix!+p(mat2)) then rederr("no matrix in add");
- dimz:=get!+row!+nr(mat1);
- if not(dimz = get!+row!+nr(mat2)) then rederr("wrong dim in add");
- res:=for z:=1:dimz collect
- append(nth(mat1,z),nth(mat2,z));
- return res;
- end;
- symbolic procedure mk!+scal!+mult!+mat(scal1,mat1);
- % returns a matrix= scalar*matrix (internal structure)
- begin
- scalar res,z,s,prod;
- if not(matrix!+p(mat1)) then rederr("no matrix in add");
- res:=for each z in mat1 collect
- for each s in z collect
- <<
- prod:=multsq(scal1,s);
- prod:=subs2 prod where !*sub2=t;
- prod
- >>;
- return res;
- end;
- symbolic procedure mk!+trace(mat1);
- % returns the trace of the matrix (internal structure)
- begin
- scalar spur,s;
- if not(squared!+matrix!+p(mat1)) then
- rederr("no square matrix in add");
- spur:=(nil ./ 1);
- for s:=1:get!+row!+nr(mat1) do
- spur:=addsq(spur,get!+mat!+entry(mat1,s,s));
- spur:=subs2 spur where !*sub2=t;
- return spur;
- end;
- symbolic procedure mk!+block!+diagonal!+mat(mats);
- % returns a blockdiagonal matrix from
- % a list of matrices (internal structure)
- begin
- if length(mats)<1 then rederr("no list in mkdiagonalmats");
- if length(mats)=1 then return car mats else
- return fill!+zeros(car mats,mk!+block!+diagonal!+mat(cdr(mats)));
- end;
- symbolic procedure fill!+zeros(mat1,mat2);
- % returns a blockdiagonal matrix from 2 matrices (internal structure)
- begin
- scalar nullmat1,nullmat2;
- nullmat1:=mk!+null!+mat(get!+row!+nr(mat2),get!+col!+nr(mat1));
- nullmat2:=mk!+null!+mat(get!+row!+nr(mat1),get!+col!+nr(mat2));
- return append(add!+two!+mats(mat1,nullmat2),
- add!+two!+mats(nullmat1,mat2));
- end;
- symbolic procedure mk!+outer!+mat(innermat);
- % returns a matrix for algebraic level
- begin
- scalar res,s,z;
- if not(matrix!+p(innermat)) then rederr("no matrix in mkoutermat");
- res:= for each z in innermat collect
- for each s in z collect
- prepsq s;
- return append(list('mat),res);
- end;
- symbolic procedure mk!+inner!+mat(outermat);
- % returns a matrix in internal structure
- begin
- scalar res,s,z;
- res:= for each z in cdr outermat collect
- for each s in z collect
- simp s;
- if matrix!+p(res) then return res else
- rederr("incorrect input in mkinnermat");
- end;
- symbolic procedure mk!+resimp!+mat(innermat);
- % returns a matrix in internal structure
- begin
- scalar res,s,z;
- res:= for each z in innermat collect
- for each s in z collect
- resimp s;
- return res;
- end;
- symbolic procedure mk!+null!+mat(dimz,dims);
- % returns a matrix of zeros in internal structure
- begin
- scalar nullsq,s,z,res;
- nullsq:=(nil ./ 1);
- res:=for z:=1:dimz collect
- for s:=1:dims collect nullsq;
- return res;
- end;
- symbolic procedure mk!+unit!+mat(dimension);
- % returns a squared unit matrix in internal structure
- begin
- return gen!+can!+bas(dimension);
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % vector functions
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure vector!+p(vector1);
- % returns the length of a vector
- % vector -- list of sqs
- begin
- if length(vector1)>0 then return t;
- end;
- symbolic procedure get!+vec!+dim(vector1);
- % returns the length of a vector
- % vector -- list of sqs
- begin
- return length(vector1);
- end;
- symbolic procedure get!+vec!+entry(vector1,elem);
- % returns the length of a vector
- % vector -- list of sqs
- begin
- return nth(vector1,elem);
- end;
- symbolic procedure mk!+mat!+mult!+vec(mat1,vector1);
- % returns a vector= matrix*vector (internal structure)
- begin
- scalar z;
- return for each z in mat1 collect
- mk!+real!+inner!+product(z,vector1);
- end;
- symbolic procedure mk!+scal!+mult!+vec(scal1,vector1);
- % returns a vector= scalar*vector (internal structure)
- begin
- scalar entry,res,h;
- res:=for each entry in vector1 collect
- <<
- h:=multsq(scal1,entry);
- h:=subs2 h where !*sub2=t;
- h
- >>;
- return res;
- end;
- symbolic procedure mk!+vec!+add!+vec(vector1,vector2);
- % returns a vector= vector1+vector2 (internal structure)
- begin
- scalar ent,res,h;
- res:=for ent:=1:get!+vec!+dim(vector1) collect
- <<
- h:= addsq(get!+vec!+entry(vector1,ent),
- get!+vec!+entry(vector2,ent));
- h:=subs2 h where !*sub2=t;
- h
- >>;
- return res;
- end;
- symbolic procedure mk!+squared!+norm(vector1);
- % returns a scalar= sum vector_i^2 (internal structure)
- begin
- return mk!+inner!+product(vector1,vector1);
- end;
- symbolic procedure my!+nullsq!+p(scal);
- % returns true, if ths sq is zero
- begin
- if null(numr( scal)) then return t;
- end;
- symbolic procedure mk!+null!+vec(dimen);
- % returns a vector of zeros
- begin
- scalar nullsq,i,res;
- nullsq:=(nil ./ 1);
- res:=for i:=1:dimen collect nullsq;
- return res;
- end;
- symbolic procedure mk!+conjugate!+vec(vector1);
- % returns a vector of zeros
- begin
- scalar z,res;
- res:=for each z in vector1 collect mk!+conjugate!+sq(z);
- return res;
- end;
- symbolic procedure null!+vec!+p(vector1);
- % returns a true, if vector is the zero vector
- begin
- if my!+nullsq!+p(mk!+squared!+norm(vector1)) then
- return t;
- end;
- symbolic procedure mk!+normalize!+vector(vector1);
- % returns a normalized vector (internal structure)
- begin
- scalar scalo,vecres;
- scalo:=simp!* {'sqrt, mk!*sq(mk!+squared!+norm(vector1))};
- if my!+nullsq!+p(scalo) then
- vecres:= mk!+null!+vec(get!+vec!+dim(vector1)) else
- <<
- scalo:=simp prepsq scalo;
- scalo:=quotsq((1 ./ 1),scalo);
- vecres:= mk!+scal!+mult!+vec(scalo,vector1);
- >>;
- return vecres;
- end;
- symbolic procedure mk!+inner!+product(vector1,vector2);
- % returns the inner product of vector1 and vector2 (internal structure)
- begin
- scalar z,sum,vec2;
- if not(get!+vec!+dim(vector1) = get!+vec!+dim(vector2)) then
- rederr("wrong dimensions in innerproduct");
- sum:=(nil ./ 1);
- if !*complex then vec2:=mk!+conjugate!+vec(vector2) else
- vec2:=vector2;
- for z:=1:get!+vec!+dim(vector1) do
- sum:=addsq(sum,multsq(
- get!+vec!+entry(vector1,z),
- get!+vec!+entry(vec2,z)
- )
- );
- sum:=subs2 sum where !*sub2=t;
- return sum;
- end;
- symbolic procedure mk!+real!+inner!+product(vector1,vector2);
- % returns the inner product of vector1 and vector2 (internal structure)
- begin
- scalar z,sum;
- if not(get!+vec!+dim(vector1) = get!+vec!+dim(vector2)) then
- rederr("wrong dimensions in innerproduct");
- sum:=(nil ./ 1);
- for z:=1:get!+vec!+dim(vector1) do
- sum:=addsq(sum,multsq(
- get!+vec!+entry(vector1,z),
- get!+vec!+entry(vector2,z)
- )
- );
- sum:=subs2 sum where !*sub2=t;
- return sum;
- end;
- symbolic procedure mk!+Gram!+Schmid(vectorlist,vector1);
- % returns a vectorlist of orthonormal vectors
- % assumptions: vectorlist is orthonormal basis, internal structure
- begin
- scalar i,orthovec,scalo,vectors;
- orthovec:=vector1;
- for i:=1:(length(vectorlist)) do
- <<
- scalo:= negsq(mk!+inner!+product(orthovec,nth(vectorlist,i)));
- orthovec:=mk!+vec!+add!+vec(orthovec,
- mk!+scal!+mult!+vec(scalo,nth(vectorlist,i)));
- >>;
- orthovec:=mk!+normalize!+vector(orthovec);
- if null!+vec!+p(orthovec) then
- vectors:=vectorlist else
- vectors:=add!+vector!+to!+list(orthovec,vectorlist);
- return vectors;
- end;
- symbolic procedure Gram!+Schmid(vectorlist);
- % returns a vectorlist of orthonormal vectors
- begin
- scalar ortholist,i;
- if length(vectorlist)<1 then rederr("error in Gram Schmid");
- if vector!+p(car vectorlist) then
- ortholist:=nil
- else rederr("strange in Gram-Schmid");
- for i:=1:length(vectorlist) do
- ortholist:=mk!+Gram!+Schmid(ortholist,nth(vectorlist,i));
- return ortholist;
- end;
- symbolic procedure add!+vector!+to!+list(vector1,vectorlist);
- % returns a list of vectors consisting of vectorlist
- % and the vector1 at the end
- % internal structure
- begin
- return append(vectorlist,list(vector1));
- end;
- symbolic procedure mk!+internal!+mat(vectorlist);
- % returns a matrix consisting of columns
- % equal to the vectors in vectorlist
- % internal structure
- begin
- return mk!+transpose!+matrix(vectorlist);
- end;
- symbolic procedure mat!+veclist(mat1);
- % returns a vectorlist consisting of the columns of the matrix
- % internal structure
- begin
- return mk!+transpose!+matrix(mat1);
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % some useful functions
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure change!+sq!+to!+int(scal1);
- % scal1 -- sq which is an integer
- % result is a nonnegative integer
- begin
- scalar nr;
- nr:=simp!* prepsq scal1;
- if (denr(nr) = 1) then return numr(nr) else
- rederr("no integer in change!+sq!+to!+int");
- end;
- symbolic procedure change!+int!+to!+sq(scal1);
- % scal1 -- integer for example 1 oder 2 oder 3
- % result is a sq
- begin
- return (scal1 ./ 1);
- end;
- symbolic procedure change!+sq!+to!+algnull(scal1);
- begin
- scalar rulesum,storecomp;
- if !*complex then
- <<
- storecomp:=t;
- off complex;
- >> else
- <<
- storecomp:=nil;
- >>;
- rulesum:=evalwhereexp ({'(list (list
- (REPLACEBY
- (COS (!~ X))
- (TIMES
- (QUOTIENT 1 2)
- (PLUS (EXPT E (TIMES I (!~ X))) (EXPT E (MINUS (TIMES I (!~ X))))) ))
- (REPLACEBY
- (SIN (!~ X))
- (TIMES
- (QUOTIENT 1 (times 2 i))
- (difference (EXPT E (TIMES I (!~ X)))
- (EXPT E (MINUS (TIMES I (!~ X))))) ))
- ))
- , prepsq(scal1)});
- rulesum:=reval rulesum;
- if storecomp then on complex;
- % print!-sq(simp (rulesum));
- return rulesum;
- end;
- symbolic procedure mk!+conjugate!+sq(mysq);
- begin
- return conjsq(mysq);
- % return subsq(mysq,'(( i . (minus i))));
- end;
- symbolic procedure mk!+equation(arg1,arg2);
- begin
- return list('equal,arg1,arg2);
- end;
- symbolic procedure outer!+equation!+p(outerlist);
- begin
- if eqcar(outerlist, 'equal) then return t
- end;
- symbolic procedure mk!+outer!+list(innerlist);
- begin
- return append (list('list),innerlist)
- end;
- symbolic procedure mk!+inner!+list(outerlist);
- begin
- if outer!+list!+p(outerlist) then return cdr outerlist;
- end;
- symbolic procedure outer!+list!+p(outerlist);
- begin
- if eqcar(outerlist, 'list) then return t
- end;
- symbolic procedure equal!+lists!+p(ll1,ll2);
- begin
- return (list!+in!+list!+p(ll1,ll2) and list!+in!+list!+p(ll2,ll1));
- end;
- symbolic procedure list!+in!+list!+p(ll1,ll2);
- begin
- if length(ll1)=0 then return t else
- return (memq(car ll1,ll2) and list!+in!+list!+p(cdr ll1,ll2));
- end;
- symbolic procedure print!-matrix(mat1);
- begin
- writepri (mkquote mk!+outer!+mat(mat1),'only);
- end;
- symbolic procedure print!-sq(mysq);
- begin
- writepri (mkquote prepsq(mysq),'only);
- end;
- endmodule;
- module symcheck;
- %
- % Symmetry Package
- %
- % Author : Karin Gatermann
- % Konrad-Zuse-Zentrum fuer
- % Informationstechnik Berlin
- % Heilbronner Str. 10
- % W-1000 Berlin 31
- % Germany
- % Email: Gatermann@sc.ZIB-Berlin.de
- % symcheck.red
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % check user input -- used by functions in sym_main.red
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure representation!:p(rep);
- % returns true, if rep is a representation
- begin
- scalar group,elem,mats,mat1,dim1;
- if length(rep)<0 then rederr("list too short");
- if not(outer!+list!+p(rep)) then rederr("argument should be a list");
- if (length(rep)<2) then rederr("empty list is not a representation");
- group:=get!_group!_out(rep);
- if not(available!*p(group) or storing!*p(group)) then
- rederr("one element must be an identifier of an available group");
- mats:=for each elem in get!*generators(group) collect
- get!_repmatrix!_out(elem,rep);
- for each mat1 in mats do
- if not(alg!+matrix!+p(mat1)) then
- rederr("there should be a matrix for each generator");
- mats:=for each mat1 in mats collect mk!+inner!+mat(mat1);
- for each mat1 in mats do
- if not(squared!+matrix!+p(mat1)) then
- rederr("matrices should be squared");
- mat1:=car mats;
- mats:=cdr mats;
- dim1:=get!+row!+nr(mat1);
- while length(mats)>0 do
- <<
- if not(dim1=get!+row!+nr(car mats)) then
- rederr("representation matrices must have the same dimension");
- mat1:=car mats;
- mats:= cdr mats;
- >>;
- return t;
- end;
- symbolic procedure irr!:nr!:p(nr,group);
- % returns true, if group is a group and information is available
- % and nr is number of an irreducible representation
- begin
- if not(fixp(nr)) then rederr("nr should be an integer");
- if (nr>0 and nr<= get!_nr!_irred!_reps(group)) then
- return t;
- end;
- symbolic procedure symmetry!:p(matrix1,representation);
- % returns true, if the matrix has the symmetry of this representation
- % internal structures
- begin
- scalar group,glist,symmetryp,repmat;
- group:=get!_group!_in(representation);
- glist:=get!*generators(group);
- symmetryp:=t;
- while (symmetryp and (length(glist)>0)) do
- <<
- repmat:=get!_rep!_matrix!_in(car glist,representation);
- if not (equal!+matrices!+p(
- mk!+mat!+mult!+mat(repmat,matrix1),
- mk!+mat!+mult!+mat(matrix1,repmat)) ) then
- symmetryp:=nil;
- glist:= cdr glist;
- >>;
- return symmetryp;
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % check functions used by definition of the group
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure identifier!:list!:p(idlist);
- % returns true if idlist is a list of identifiers
- begin
- if length(idlist)>0 then
- <<
- if idp(car idlist) then
- return identifier!:list!:p(cdr idlist);
- >> else
- return t;
- end;
- symbolic procedure generator!:list!:p(group,generatorl);
- % returns true if generatorl is an idlist
- % consisting of the generators of the group
- begin
- scalar element,res;
- res:=t;
- if length(generatorl)<1 then
- rederr("there should be a list of generators");
- if length(get!*generators(group))<1 then
- rederr("there are no group generators stored");
- if not(identifier!:list!:p(generatorl)) then return nil;
- for each element in generatorl do
- if not(g!*generater!*p(group,element)) then
- res:=nil;
- return res;
- end;
- symbolic procedure relation!:list!:p(group,relations);
- % relations -- list of two generator lists
- begin
- if length(get!*generators(group))<1 then
- rederr("there are no group generators stored");
- return (relation!:part!:p(group,car relations) and
- relation!:part!:p(group,cadr relations))
- end;
- symbolic procedure relation!:part!:p(group,relationpart);
- % relations -- list of two generator lists
- begin
- scalar generators,res,element;
- res:=t;
- generators:=get!*generators(group);
- if length(generators)<1 then
- rederr("there are no group generators stored");
- if length(relationpart)<1 then
- rederr("wrong relation given");
- if not(identifier!:list!:p(relationpart)) then return nil;
- generators:=append(list('id),generators);
- for each element in relationpart do
- if not(memq(element,generators)) then res:=nil;
- return res;
- end;
- symbolic procedure group!:table!:p(group,gtable);
- % returns true, if gtable is a group table
- % gtable - matrix in internal representation
- begin
- scalar row;
- if not(get!+mat!+entry(gtable,1,1) = 'grouptable) then
- rederr("first diagonal entry in a group table must be grouptable");
- for each row in gtable do
- if not(group!:elemts!:p(group,cdr row)) then
- rederr("this should be a group table");
- for each row in mk!+transpose!+matrix(gtable) do
- if not(group!:elemts!:p(group,cdr row)) then
- rederr("this should be a group table");
- return t;
- end;
- symbolic procedure group!:elemts!:p(group,elems);
- % returns true if each element of group appears exactly once in the list
- begin
- return equal!+lists!+p(get!*elements(group),elems);
- end;
- symbolic procedure check!:complete!:rep!:p(group);
- % returns true if sum ni^2 = grouporder and
- % sum realni = sum complexni
- begin
- scalar nr,j,sum,dime,order1,sumreal,chars,complexcase;
- nr:=get!*nr!*complex!*irred!*reps(group);
- sum:=(nil ./ 1);
- for j:=1:nr do
- <<
- dime:=change!+int!+to!+sq( get!_dimension!_in(
- get!*complex!*irreducible!*rep(group,j)));
- sum:=addsq(sum,multsq(dime,dime));
- >>;
- order1:=change!+int!+to!+sq(get!*order(group));
- if not(null(numr(addsq(sum,negsq(order1))))) then
- rederr("one complex irreducible representation missing or
- is not irreducible");
- sum:=(nil ./ 1);
- for j:=1:nr do
- <<
- dime:=change!+int!+to!+sq( get!_dimension!_in(
- get!*complex!*irreducible!*rep(group,j)));
- sum:=addsq(sum,dime);
- >>;
- chars:=for j:=1:nr collect
- get!*complex!*character(group,j);
- if !*complex then
- <<
- complexcase:=t;
- >> else
- <<
- complexcase:=nil;
- on complex;
- >>;
- if not(orthogonal!:characters!:p(chars)) then
- rederr("characters are not orthogonal");
- if null(complexcase) then off complex;
- nr:=get!*nr!*real!*irred!*reps(group);
- sumreal:=(nil ./ 1);
- for j:=1:nr do
- <<
- dime:=change!+int!+to!+sq( get!_dimension!_in(
- get!*real!*irreducible!*rep(group,j)));
- sumreal:=addsq(sumreal,dime);
- >>;
- chars:=for j:=1:nr collect
- get!*real!*character(group,j);
- if not(orthogonal!:characters!:p(chars)) then
- rederr("characters are not orthogonal");
- if not(null(numr(addsq(sum,negsq(sumreal))))) then
- rederr("list real irreducible representation incomplete or wrong");
- return t;
- end;
- symbolic procedure orthogonal!:characters!:p(chars);
- % returns true if all characters in list are pairwise orthogonal
- begin
- scalar chars1,chars2,char1,char2;
- chars1:=chars;
- while (length(chars1)>0) do
- <<
- char1:=car chars1;
- chars1:=cdr chars1;
- chars2:=chars1;
- while (length(chars2)>0) do
- <<
- char2:=car chars2;
- chars2:=cdr chars2;
- if not(change!+sq!+to!+algnull(
- char!_prod(char1,char2))=0)
- then rederr("not orthogonal");
- >>;
- >>;
- return t;
- end;
- symbolic procedure write!:to!:file(group,filename);
- begin
- scalar nr,j;
- if not(available!*p(group)) then rederr("group is not available");
- out filename;
- rprint(list
- ('off, 'echo));
- rprint('symbolic);
- rprint(list
- ('set!*elems!*group ,mkquote group,mkquote get!*elements(group)));
- rprint(list
- ('set!*generators, mkquote group,mkquote get!*generators(group)));
- rprint(list
- ('set!*relations, mkquote group,
- mkquote get!*generator!*relations(group)));
- rprint(list
- ('set!*grouptable, mkquote group,mkquote get(group,'grouptable)));
- rprint(list
- ('set!*inverse, mkquote group,mkquote get(group,'inverse)));
- rprint(list
- ('set!*elemasgen, mkquote group
- ,mkquote get(group,'elem!_in!_generators)));
- rprint(list
- ('set!*group, mkquote group,mkquote get(group,'equiclasses)));
- nr:=get!*nr!*complex!*irred!*reps(group);
- for j:=1:nr do
- <<
- rprint(list
- ('set!*representation, mkquote group,
- mkquote cdr get!*complex!*irreducible!*rep(group,j),
- mkquote 'complex));
- >>;
- nr:=get!*nr!*real!*irred!*reps(group);
- for j:=1:nr do
- <<
- rprint(list
- ('set!*representation, mkquote group,
- mkquote get(group,mkid('realrep,j)),mkquote 'real));
- >>;
- rprint(list(
- 'set!*available,mkquote group));
- rprint('algebraic);
- rprint('end);
- shut filename;
- end;
- symbolic procedure mk!_relation!_list(relations);
- % input: outer structure : reval of {r*s*r^2=s,...}
- % output: list of pairs of lists
- begin
- scalar twolist,eqrel;
- if not(outer!+list!+p(relations)) then
- rederr("this should be a list");
- twolist:=for each eqrel in mk!+inner!+list(relations) collect
- change!_eq!_to!_lists(eqrel);
- return twolist;
- end;
- symbolic procedure change!_eq!_to!_lists(eqrel);
- begin
- if not(outer!+equation!+p(eqrel)) then
- rederr("equations should be given");
- return list(mk!_side!_to!_list(reval cadr eqrel),
- mk!_side!_to!_list(reval caddr eqrel));
- end;
- symbolic procedure mk!_side!_to!_list(identifiers);
- begin
- scalar i;
- if idp(identifiers) then return list(identifiers);
- if eqcar(identifiers,'Plus) then rederr("no addition in this group");
- if eqcar(identifiers,'EXPT) then
- return for i:=1:(caddr identifiers) collect (cadr identifiers);
- if eqcar(identifiers,'TIMES) then
- rederr("no multiplication with * in this group");
- if eqcar(identifiers,'!@) then
- return append(mk!_side!_to!_list(cadr identifiers),
- mk!_side!_to!_list(caddr identifiers));
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % pass to algebraic level
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure alg!:print!:group(group);
- % returns the group element list in correct algebraic mode
- begin
- return mk!+outer!+list(get!*elements(group));
- end;
- symbolic procedure alg!:generators(group);
- % returns the generator list of a group in correct algebraic mode
- begin
- return append(list('list),get!*generators(group));
- end;
- symbolic procedure alg!:characters(group);
- % returns the (real od complex) character table
- % in correct algebraic mode
- begin
- scalar nr,i,charlist,chari;
- nr:=get!_nr!_irred!_reps(group);
- charlist:=for i:=1:nr collect
- if !*complex then
- get!*complex!*character(group,i) else
- get!*real!*character(group,i);
- charlist:= for each chari in charlist collect
- alg!:print!:character(chari);
- return mk!+outer!+list(charlist);
- end;
- symbolic procedure alg!:irr!:reps(group);
- % returns the (real od complex) irr. rep. table
- % in correct algebraic mode
- begin
- scalar repi,reps,nr,i;
- nr:=get!_nr!_irred!_reps(group);
- reps:=for i:=1:nr collect
- if !*complex then
- get!*complex!*irreducible!*rep(group,nr) else
- get!*real!*irreducible!*rep(group,i);
- reps:= for each repi in reps collect
- alg!:print!:rep(repi);
- return mk!+outer!+list(reps);
- end;
- symbolic procedure alg!:print!:rep(representation);
- % returns the representation in correct algebraic mode
- begin
- scalar pair,repr,group,mat1,g;
- group:=get!_group!_in(representation);
- repr:=eli!_group!_in(representation);
- repr:= for each pair in repr collect
- <<
- mat1:=cadr pair;
- g:=car pair;
- mat1:=mk!+outer!+mat(mat1);
- mk!+equation(g,mat1)
- >>;
- repr:=append(list(group),repr);
- return mk!+outer!+list(repr)
- end;
- symbolic procedure alg!:can!:decomp(representation);
- % returns the canonical decomposition in correct algebraic mode
- % representation in internal structure
- begin
- scalar nr,nrirr,ints,i,sum;
- nrirr:=get!_nr!_irred!_reps(get!_group!_in(representation));
- ints:=for nr:=1:nrirr collect
- mk!_multiplicity(representation,nr);
- sum:=( nil ./ 1);
- ints:= for i:=1:length(ints) do
- sum:=addsq(sum,
- multsq(change!+int!+to!+sq(nth(ints,i)),
- simp mkid('teta,i)
- )
- );
- return mk!+equation('teta,prepsq sum);
- end;
- symbolic procedure alg!:print!:character(character);
- % changes the character from internal representation
- % to printable representation
- begin
- scalar group,res,equilists;
- group:=get!_char!_group(character);
- res:=get!*all!*equi!*classes(group);
- res:= for each equilists in res collect
- mk!+outer!+list(equilists);
- res:= for each equilists in res collect
- mk!+outer!+list( list(equilists,
- prepsq get!_char!_value(character,cadr equilists)));
- res:=append(list(group),res);
- return mk!+outer!+list(res);
- end;
- endmodule;
- module symchrep;
- %
- % Symmetry Package
- %
- % Author : Karin Gatermann
- % Konrad-Zuse-Zentrum fuer
- % Informationstechnik Berlin
- % Heilbronner Str. 10
- % W-1000 Berlin 31
- % Germany
- % Email: Gatermann@sc.ZIB-Berlin.de
- % symchrep.red
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions for representations in iternal structure
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure mk!_internal(representation);
- % transfers the user given representation structure to the
- % internal structure
- begin
- scalar group,elems,generators,repgenerators,g,res;
- group:=get!_group!_out(representation);
- elems:=get!*elements(group);
- generators:=get!*generators(group);
- repgenerators:=mk!_rep!_relation(representation,generators);
- if not(hard!_representation!_check!_p(group,repgenerators)) then
- rederr("this is no representation");
- res:=for each g in elems collect
- list(g,
- mk!_rep!_mat(
- get!*elem!*in!*generators(group,g),
- repgenerators)
- );
- return append(list(group),res);
- end;
- symbolic procedure hard!_representation!_check!_p(group,repgenerators);
- % repgenerators -- ((g1,matg1),(g2,matg2),...)
- begin
- scalar checkp;
- checkp:=t;
- for each relation in get!*generator!*relations(group) do
- if not(relation!_check!_p(relation,repgenerators)) then
- checkp:=nil;
- return checkp;
- end;
- symbolic procedure relation!_check!_p(relation,repgenerators);
- begin
- scalar mat1,mat2;
- mat1:=mk!_relation!_mat(car relation, repgenerators);
- mat2:=mk!_relation!_mat(cadr relation, repgenerators);
- return equal!+matrices!+p(mat1,mat2);
- end;
- symbolic procedure mk!_relation!_mat(relationpart,repgenerators);
- begin
- scalar mat1,g;
- mat1:=mk!+unit!+mat(get!+row!+nr(cadr car repgenerators));
- for each g in relationpart do
- mat1:=mk!+mat!+mult!+mat(mat1,get!_mat(g,repgenerators));
- return mat1;
- end;
- symbolic procedure get!_mat(elem,repgenerators);
- begin
- scalar found,res;
- if elem='id then
- return mk!+unit!+mat(get!+row!+nr(cadr car repgenerators));
- found:=nil;
- while ((length(repgenerators)>0) and (null found)) do
- <<
- if elem = caar repgenerators then
- <<
- res:=cadr car repgenerators;
- found := t;
- >>;
- repgenerators:=cdr repgenerators;
- >>;
- if found then return res else
- rederr("error in get_mat");
- end;
- symbolic procedure mk!_rep!_mat(generatorl,repgenerators);
- % returns the representation matrix (internal structure)
- % of a group element represented in generatorl
- begin
- scalar mat1;
- mat1:=mk!+unit!+mat(get!+row!+nr(cadr(car(repgenerators))));
- for each generator in generatorl do
- mat1:=mk!+mat!+mult!+mat(mat1,
- get!_rep!_of!_generator(
- generator,repgenerators)
- );
- return mat1;
- end;
- symbolic procedure get!_rep!_of!_generator(generator,repgenerators);
- % returns the representation matrix (internal structure)
- % of the generator
- begin
- scalar found,mate,ll;
- if (generator='id) then return mk!+unit!+mat(
- get!+row!+nr(cadr(car(repgenerators))));
- found:=nil;
- ll:=repgenerators;
- while (not(found) and (length(ll)>0)) do
- <<
- if (caar(ll)=generator) then
- <<
- found:=t;
- mate:=cadr(car(ll));
- >>;
- ll:=cdr ll;
- >>;
- if found then return mate else
- rederr(" error in get rep of generators");
- end;
- symbolic procedure get!_group!_in(representation);
- % returns the group of the internal data structure representation
- begin
- return car representation;
- end;
- symbolic procedure eli!_group!_in(representation);
- % returns the internal data structure representation without group
- begin
- return cdr representation;
- end;
- symbolic procedure get!_rep!_matrix!_in(elem,representation);
- % returns the matrix of the internal data structure representation
- begin
- scalar found,mate,replist;
- found:=nil;
- replist:=cdr representation;
- while (null(found) and length(replist)>0) do
- <<
- if ((caar(replist)) = elem) then
- <<
- mate:=cadr(car (replist));
- found:=t;
- >>;
- replist:=cdr replist;
- >>;
- if found then return mate else
- rederr("error in get representation matrix");
- end;
- symbolic procedure get!_dimension!_in(representation);
- % returns the dimension of the representation (internal data structure)
- % output is an integer
- begin
- return change!+sq!+to!+int(mk!+trace(get!_rep!_matrix!_in('id,
- representation)));
- end;
- symbolic procedure get!_rep!_matrix!_entry(representation,elem,z,s);
- % get a special value of the matrix representation of group
- % get the matrix of this representatiuon corresponding
- % to the element elem
- % returns the matrix element of row z and column s
- begin
- return get!+mat!+entry(
- get!_rep!_matrix!_in(elem,representation),
- z,s) ;
- end;
- symbolic procedure mk!_resimp!_rep(representation);
- begin
- scalar group,elem,res;
- group:=get!_group!_in(representation);
- res:=for each elem in get!*elements(group) collect
- list(elem,mk!+resimp!+mat(get!_rep!_matrix!_in(elem,representation)));
- return append(list(group),res);
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions for characters in iternal structure
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure get!_char!_group(char1);
- % returns the group of the internal data structure character
- begin
- return car char1;
- end;
- symbolic procedure get!_char!_dim(char1);
- % returns the dimension of the internal data structure character
- % output is an integer
- begin
- return change!+sq!+to!+int(get!_char!_value(char1,'id));
- end;
- symbolic procedure get!_char!_value(char1,elem);
- % returns the value of an element
- % of the internal data structure character
- begin
- scalar found,value,charlist;
- found:=nil;
- charlist:=cdr char1;
- while (null(found) and length(charlist)>0) do
- <<
- if ((caar(charlist)) = elem) then
- <<
- value:=cadr(car (charlist));
- found:=t;
- >>;
- charlist := cdr charlist;
- >>;
- if found then return value else
- rederr("error in get character element");
- end;
- endmodule;
- module symhandl;
- %
- % Symmetry Package
- %
- % Author: Karin Gatermann
- % Konrad-Zuse-Zentrum fuer
- % Informationstechnik Berlin
- % Heilbronner Str. 10
- % W-1000 Berlin 31
- % Germany
- % Email: Gatermann@sc.ZIB-Berlin.de
- % symhandl.red
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions to get the stored information of groups
- % booleans first
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure available!*p(group);
- % returns true, if the information
- % concerning irreducible representations
- % of the group are in this database
- begin
- if not(idp(group)) then rederr("this is no group identifier");
- return flagp(group,'available);
- end;
- symbolic procedure storing!*p(group);
- % returns true, if the information concerning generators
- % and group elements
- % of the group are in this database
- begin
- return flagp(group,'storing);
- end;
- symbolic procedure g!*element!*p(group,element);
- % returns true, if element is an element of the abstract group
- begin
- if memq(element,get!*elements(group)) then return t else return nil;
- end;
- symbolic procedure g!*generater!*p(group,element);
- % returns true, if element is a generator of the abstract group
- begin
- if memq(element,get!*generators(group)) then return t else return nil;
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % operators for abstract group
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure get!*available!*groups;
- % returns the available groups as a list
- begin
- return get('availables,'groups);
- end;
- symbolic procedure get!*order(group);
- % returns the order of group as integer
- begin
- return length(get!*elements(group));
- end;
- symbolic procedure get!*elements(group);
- % returns the abstract elements of group
- % output list of identifiers
- begin
- scalar ll;
- return get(group,'elems);
- end;
- symbolic procedure get!*generators(group);
- % returns a list abstract elements of group which generates the group
- begin
- return get(group,'generators);
- end;
- symbolic procedure get!*generator!*relations(group);
- % returns a list with relations
- % which are satisfied for the generators of the group
- begin
- return get(group,'relations);
- end;
- symbolic procedure get!*product(group,elem1,elem2);
- % returns the element elem1*elem2 of group
- begin
- scalar table,above,left;
- table:=get(group,'grouptable);
- above:= car table;
- left:=for each row in table collect car row;
- return get!+mat!+entry(table,
- give!*position(elem1,left),
- give!*position(elem2,above));
- end;
- symbolic procedure get!*inverse(group,elem);
- % returns the inverse element of the element elem in group
- % invlist = ((g1,g2,..),(inv1,inv2,...))
- begin
- scalar invlist;
- invlist:=get(group,'inverse);
- return nth(cadr invlist,give!*position(elem,car invlist));
- end;
- symbolic procedure give!*position(elem,ll);
- begin
- scalar j,found;
- j:=1; found:=nil;
- while (null(found) and (j<=length(ll))) do
- <<
- if (nth(ll,j)=elem) then found:=t else j:=j+1;
- >>;
- if null(found) then rederr("error in give position");
- return j;
- end;
- symbolic procedure get!*elem!*in!*generators(group,elem);
- % returns the element representated by the generators of group
- begin
- scalar ll,found,res;
- ll:=get(group,'elem!_in!_generators);
- if (elem='id) then return list('id);
- found:=nil;
- while (null(found) and (length(ll)>0)) do
- <<
- if (elem=caaar ll) then
- <<
- res:=cadr car ll;
- found:=t;
- >>;
- ll:=cdr ll;
- >>;
- if found then return res else
- rederr("error in get!*elem!*in!*generators");
- end;
- symbolic procedure get!*nr!*equi!*classes(group);
- % returns the number of equivalence classes of group
- begin
- return length(get(group,'equiclasses));
- end;
- symbolic procedure get!*equi!*class(group,elem);
- % returns the equivalence class of the element elem in group
- begin
- scalar ll,equic,found;
- ll:=get(group,'equiclasses);
- found:=nil;
- while (null(found) and (length(ll)>0)) do
- <<
- if memq(elem,car ll) then
- <<
- equic:=car ll;
- found:=t;
- >>;
- ll:=cdr ll;
- >>;
- if found then return equic;
- end;
- symbolic procedure get!*all!*equi!*classes(group);
- % returns the equivalence classes of the element elem in group
- % list of lists of identifiers
- begin
- return get(group,'equiclasses);
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions to get information of real irred. representation of group
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure get!*nr!*real!*irred!*reps(group);
- % returns number of real irreducible representations of group
- begin
- return get(group,'realrepnumber);
- end;
- symbolic procedure get!*real!*character(group,nr);
- % returns the nr-th real character of the group group
- begin
- return mk!_character(get!*real!*irreducible!*rep(group,nr));
- end;
- symbolic procedure get!*real!*comp!*chartype!*p(group,nr);
- % returns true if the type of the real irreducible rep.
- % of the group is complex
- begin
- if eqcar( get(group,mkid('realrep,nr)) ,'complextype) then return t;
- end;
- symbolic procedure get!*real!*irreducible!*rep(group,nr);
- % returns the real nr-th irreducible matrix representation of group
- begin
- return mk!_resimp!_rep(append(list(group),
- cdr get(group,mkid('realrep,nr))));
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions to get information of
- % complex irreducible representation of group
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure get!*nr!*complex!*irred!*reps(group);
- % returns number of complex irreducible representations of group
- begin
- return get(group,'complexrepnumber);
- end;
- symbolic procedure get!*complex!*character(group,nr);
- % returns the nr-th complex character of the group group
- begin
- return mk!_character(get!*complex!*irreducible!*rep(group,nr));
- end;
- symbolic procedure get!*complex!*irreducible!*rep(group,nr);
- % returns the complex nr-th irreduciblematrix representation of group
- begin
- return mk!_resimp!_rep(append(list(group),
- get(group,mkid('complexrep,nr))));
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % set information upon group
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure set!*group(group,equiclasses);
- %
- begin
- put(group,'equiclasses,equiclasses);
- end;
- symbolic procedure set!*elems!*group(group,elems);
- %
- begin
- put(group,'elems,elems);
- end;
- symbolic procedure set!*generators(group,generators);
- %
- begin
- put(group,'generators,generators);
- end;
- symbolic procedure set!*relations(group,relations);
- %
- begin
- put(group,'relations,relations);
- end;
- symbolic procedure set!*available(group);
- begin
- scalar grouplist;
- flag(list(group),'available);
- grouplist:=get('availables,'groups);
- grouplist:=append(grouplist,list(group));
- put('availables,'groups,grouplist);
- end;
- symbolic procedure set!*storing(group);
- begin
- flag(list(group),'storing);
- end;
- symbolic procedure set!*grouptable(group,table);
- %
- begin
- put(group,'grouptable,table);
- end;
- symbolic procedure set!*inverse(group,invlist);
- % stores the inverse element list in group
- begin
- put(group,'inverse,invlist);
- end;
- symbolic procedure set!*elemasgen(group,glist);
- %
- begin
- put(group,'elem!_in!_generators,glist);
- end;
- symbolic procedure set!*representation(group,replist,type);
- %
- begin
- scalar nr;
- nr:=get(group,mkid(type,'repnumber));
- if null(nr) then nr:=0;
- nr:=nr+1;
- put(group,mkid(mkid(type,'rep),nr),replist);
- set!*repnumber(group,type,nr);
- end;
- symbolic procedure set!*repnumber(group,type,nr);
- %
- begin
- put(group,mkid(type,'repnumber),nr);
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions to build information upon group
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure mk!*inverse!*list(table);
- % returns ((elem1,elem2,..),(inv1,inv2,..))
- begin
- scalar elemlist,invlist,elem,row,column;
- elemlist:=cdr(car (mk!+transpose!+matrix(table)));
- invlist:=for each elem in elemlist collect
- <<
- row:=give!*position(elem,elemlist);
- column:=give!*position('id,cdr nth(table,row+1));
- nth(cdr(car table),column)
- >>;
- return list(elemlist,invlist);
- end;
- symbolic procedure mk!*equiclasses(table);
- % returns ((elem1,elem2,..),(inv1,inv2,..))
- begin
- scalar elemlist,restlist,s,r,tt,ts;
- scalar rows,rowt,columnt,columnr,equiclasses,equic,firstrow;
- elemlist:=cdr(car (mk!+transpose!+matrix(table)));
- restlist:=elemlist;
- firstrow:=cdr car table;
- equiclasses:=nil;
- while (length(restlist)>0) do
- <<
- s:=car restlist;
- rows:=give!*position(s,elemlist);
- equic:=list(s);
- restlist:=cdr restlist;
- for each tt in elemlist do
- <<
- columnt:=give!*position(tt,firstrow);
- rowt:=give!*position(tt,elemlist);
- ts:=get!+mat!+entry(table,rows+1,columnt+1);
- columnr:=give!*position(ts,cdr nth(table,rowt+1));
- r:=nth(firstrow,columnr);
- equic:=union(equic,list(r));
- restlist:=delete(r,restlist);
- >>;
- equiclasses:=append(equiclasses,list(equic));
- >>;
- return equiclasses;
- end;
- endmodule;
- module sympatch;
- % from rprint.red
- load!_package 'rprint;
- fluid '(!*n buffp combuff!* curmark curpos orig pretop pretoprinf rmar);
- symbolic procedure rprint u;
- begin integer !*n; scalar buff,buffp,curmark,rmar,x;
- curmark := 0;
- buff := buffp := list list(0,0);
- rmar := linelength nil;
- x := get('!*semicol!*,pretop);
- !*n := 0;
- mprino1(u,list(caar x,cadar x));
- % prin2ox ";";
- prin2ox "$"; %3.11 91 KG
- omarko curmark;
- prinos buff
- end;
- % error in treatment of roots in connection
- % with conjugate of complex numbers
- symbolic procedure reimexpt u;
- if cadr u eq 'e
- then addsq(reimcos list('cos,reval list('times,'i,caddr u)),
- multsq(simp list('minus,'i),
- reimsin list('sin,reval list('times,'i,caddr u))))
- else if fixp cadr u and cadr u > 0
- and eqcar(caddr u,'quotient)
- and fixp cadr caddr u
- and fixp caddr caddr u
- then mksq(u,1)
- else addsq(mkrepart u,multsq(simp 'i,mkimpart u));
- put('expt,'cmpxsplitfn,'reimexpt);
- put('cos,'cmpxsplitfn,'reimcos);
- put('sin,'cmpxsplitfn,'reimsin);
- endmodule;
- % algebraic repart(pi):=pi; % Present in 3.4.1 and later versions.
- % algebraic impart(pi):=0;
- % error in treatment of roots in connection
- % with conjugate of complex numbers
- % end;
- module symwork;
- %
- % Symmetry Package
- %
- % Author : Karin Gatermann
- % Konrad-Zuse-Zentrum fuer
- % Informationstechnik Berlin
- % Heilbronner Str. 10
- % W-1000 Berlin 31
- % Germany
- % Email: Gatermann@sc.ZIB-Berlin.de
- % symwork.red
- % underground functions
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % Boolean functions
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %symbolic procedure complex!_case!_p();
- % returns true, if complex arithmetic is desired
- %begin
- % if !*complex then return t else return nil;
- %end;
- switch outerzeroscheck;
- symbolic procedure correct!_diagonal!_p(matrix,representation,mats);
- % returns true, if matrix may be block diagonalized to mats
- begin
- scalar basis,diag;
- basis:=mk!_sym!_basis (representation);
- diag:= mk!+mat!*mat!*mat(
- mk!+hermitean!+matrix(basis),
- matrix,basis);
- if equal!+matrices!+p(diag,mats) then return t;
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions on data depending on real or complex case
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure get!_nr!_irred!_reps(group);
- % returns number of irreducible representations of group
- begin
- if !*complex then
- return get!*nr!*complex!*irred!*reps(group) else
- return get!*nr!*real!*irred!*reps(group);
- end;
- symbolic procedure get!_dim!_irred!_reps(group,nr);
- % returns dimension of nr-th irreducible representations of group
- begin
- scalar rep;
- % if !*complex then
- % return get!_char!_dim(get!*complex!*character(group,nr)) else
- % return get!_char!_dim(get!*real!*character(group,nr));
- if !*complex then
- rep:= get!*complex!*irreducible!*rep(group,nr) else
- rep:= get!*real!*irreducible!*rep(group,nr);
- return get!_dimension!_in(rep);
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions for user given representations
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure get!_group!_out(representation);
- % returns the group identifier given in representation
- begin
- scalar group,found,eintrag,repl;
- found:=nil;
- repl:=cdr representation;
- while (not(found) and (length(repl)>1)) do
- <<
- eintrag:=car repl;
- repl:=cdr repl;
- if idp(eintrag) then
- <<
- group:=eintrag;
- found:=t;
- >>;
- >>;
- if found then return group else
- rederr("group identifier missing");
- end;
- symbolic procedure get!_repmatrix!_out(elem,representation);
- % returns the representation matrix of elem given in representation
- % output in internal structure
- begin
- scalar repl,found,matelem,eintrag;
- found:=nil;
- repl:= cdr representation;
- while (null(found) and (length(repl)>0)) do
- <<
- eintrag:=car repl;
- repl:=cdr repl;
- if eqcar(eintrag,'equal) then
- <<
- if not(length(eintrag) = 3) then
- rederr("incomplete equation");
- if (cadr(eintrag) = elem) then
- <<
- found:=t;
- matelem:=caddr eintrag;
- >>;
- >>;
- >>;
- if found then return matelem else
- rederr("representation matrix for one generator missing");
- end;
- symbolic procedure mk!_rep!_relation(representation,generators);
- % representation in user given structure
- % returns a list of pairs with generator and its representation matrix
- % in internal structure
- begin
- scalar g,matg,res;
- res:=for each g in generators collect
- <<
- matg:= mk!+inner!+mat(get!_repmatrix!_out(g,representation));
- if not(unitarian!+p(matg)) then
- rederr("please give an orthogonal or unitarian matrix");
- list(g,matg)
- >>;
- return res;
- end;
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %
- % functions which compute, do the real work, get correct arguments
- % and use get-functions from sym_handle_data.red
- %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- symbolic procedure mk!_character(representation);
- % returns the character of the representation (in internal structure)
- % result in internal structure
- begin
- scalar group,elem,char;
- group:=get!_group!_in(representation);
- char:= for each elem in get!*elements(group) collect
- list(elem,
- mk!+trace(get!_rep!_matrix!_in(
- elem,representation)
- )
- );
- char:=append(list(group),char);
- return char;
- end;
- symbolic procedure mk!_multiplicity(representation,nr);
- % returns the multiplicity of the nr-th rep. in representation
- % internal structure
- begin
- scalar multnr,char1,group;
- group:=get!_group!_in(representation);
- if !*complex then
- char1:=mk!_character(get!*complex!*irreducible!*rep(group,nr))
- else
- char1:=mk!_character(get!*real!*irreducible!*rep(group,nr));
- multnr:=char!_prod(char1,mk!_character(representation));
- % complex case factor 1/2 !!
- if (not(!*complex) and
- (get!*real!*comp!*chartype!*p(group,nr))) then
- multnr:=multsq(multnr,(1 ./ 2));
- return change!+sq!+to!+int(multnr);
- end;
- symbolic procedure char!_prod(char1,char2);
- % returns the inner product of the two characters as sq
- begin
- scalar group,elems,sum,g,product;
- group:=get!_char!_group(char1);
- if not(group = get!_char!_group(char2))
- then rederr("no product for two characters of different groups");
- if not (available!*p(group)) and not(storing!*p(group)) then
- rederr("strange group in character product");
- elems:=get!*elements(group);
- sum:=nil ./ 1;
- for each g in elems do
- <<
- product:=multsq(
- get!_char!_value(char1,g),
- get!_char!_value(char2,get!*inverse(group,g))
- );
- sum:=addsq(sum,product);
- >>;
- return quotsq(sum,change!+int!+to!+sq(get!*order(group)));
- end;
- symbolic procedure mk!_proj!_iso(representation,nr);
- % returns the projection onto the isotypic component nr
- begin
- scalar group,elems,g,charnr,dimen,mapping,fact;
- group:=get!_group!_in(representation);
- if not (available!*p(group)) then
- rederr("strange group in projection");
- if not(irr!:nr!:p(nr,group)) then
- rederr("incorrect number of representation");
- elems:=get!*elements(group);
- if !*complex then
- charnr:=
- mk!_character(get!*complex!*irreducible!*rep(group,nr))
- else
- charnr:=mk!_character(get!*real!*irreducible!*rep(group,nr));
- dimen:=get!_dimension!_in(representation);
- mapping:=mk!+null!+mat(dimen,dimen);
- for each g in elems do
- <<
- mapping:=mk!+mat!+plus!+mat(
- mapping,
- mk!+scal!+mult!+mat(
- get!_char!_value(charnr,get!*inverse(group,g)),
- get!_rep!_matrix!_in(g,representation)
- )
- );
- >>;
- fact:=quotsq(change!+int!+to!+sq(get!_char!_dim(charnr)),
- change!+int!+to!+sq(get!*order(group)));
- mapping:=mk!+scal!+mult!+mat(fact,mapping);
- % complex case factor 1/2 !!
- if (not(!*complex) and
- (get!*real!*comp!*chartype!*p(group,nr))) then
- mapping:=mk!+scal!+mult!+mat((1 ./ 2),mapping);
- return mapping;
- end;
- symbolic procedure mk!_proj!_first(representation,nr);
- % returns the projection onto the first vector space of the
- % isotypic component nr
- begin
- scalar group,elems,g,irrrep,dimen,mapping,fact,charnr,irrdim;
- group:=get!_group!_in(representation);
- if not (available!*p(group)) then
- rederr("strange group in projection");
- if not(irr!:nr!:p(nr,group)) then
- rederr("incorrect number of representation");
- elems:=get!*elements(group);
- if !*complex then
- irrrep:=get!*complex!*irreducible!*rep(group,nr) else
- irrrep:=get!*real!*irreducible!*rep(group,nr);
- dimen:=get!_dimension!_in(representation);
- mapping:=mk!+null!+mat(dimen,dimen);
- for each g in elems do
- <<
- mapping:=mk!+mat!+plus!+mat(
- mapping,
- mk!+scal!+mult!+mat(
- get!_rep!_matrix!_entry(irrrep,get!*inverse(group,g),1,1),
- get!_rep!_matrix!_in(g,representation)
- )
- );
- >>;
- irrdim:=get!_dimension!_in(irrrep);
- fact:=quotsq(change!+int!+to!+sq(irrdim),
- change!+int!+to!+sq(get!*order(group)));
- mapping:=mk!+scal!+mult!+mat(fact,mapping);
- % no special rule for real irreducible representations of complex type
- return mapping;
- end;
- symbolic procedure mk!_mapping(representation,nr,count);
- % returns the mapping from V(nr 1) to V(nr count)
- % output is internal matrix
- begin
- scalar group,elems,g,irrrep,dimen,mapping,fact,irrdim;
- group:=get!_group!_in(representation);
- if not (available!*p(group)) then
- rederr("strange group in projection");
- if not(irr!:nr!:p(nr,group)) then
- rederr("incorrect number of representation");
- elems:=get!*elements(group);
- if !*complex then
- irrrep:=get!*complex!*irreducible!*rep(group,nr) else
- irrrep:=get!*real!*irreducible!*rep(group,nr);
- dimen:=get!_dimension!_in(representation);
- mapping:=mk!+null!+mat(dimen,dimen);
- for each g in elems do
- <<
- mapping:=mk!+mat!+plus!+mat(
- mapping,
- mk!+scal!+mult!+mat(
- get!_rep!_matrix!_entry(irrrep,get!*inverse(group,g),1,count),
- get!_rep!_matrix!_in(g,representation)
- )
- );
- >>;
- irrdim:=get!_dimension!_in(irrrep);
- fact:=quotsq(change!+int!+to!+sq(irrdim),
- change!+int!+to!+sq(get!*order(group)));
- mapping:=mk!+scal!+mult!+mat(fact,mapping);
- % no special rule for real irreducible representations of complex type
- return mapping;
- end;
- symbolic procedure mk!_part!_sym (representation,nr);
- % computes the symmetry adapted basis of component nr
- % output matrix
- begin
- scalar unitlist, veclist2, mapping, v;
- unitlist:=gen!+can!+bas(get!_dimension!_in(representation));
- mapping:=mk!_proj!_iso(representation,nr);
- veclist2:= for each v in unitlist collect
- mk!+mat!+mult!+vec(mapping,v);
- return mk!+internal!+mat(Gram!+Schmid(veclist2));
- end;
- symbolic procedure mk!_part!_sym1 (representation,nr);
- % computes the symmetry adapted basis of component V(nr 1)
- % internal structure for in and out
- % output matrix
- begin
- scalar unitlist, veclist2, mapping, v,group;
- unitlist:=gen!+can!+bas(get!_dimension!_in(representation));
- group:=get!_group!_in (representation);
- if (not(!*complex) and
- get!*real!*comp!*chartype!*p(group,nr)) then
- <<
- mapping:=mk!_proj!_iso(representation,nr);
- >> else
- mapping:=mk!_proj!_first(representation,nr);
- veclist2:= for each v in unitlist collect
- mk!+mat!+mult!+vec(mapping,v);
- veclist2:=mk!+resimp!+mat(veclist2);
- return mk!+internal!+mat(Gram!+Schmid(veclist2));
- end;
- symbolic procedure mk!_part!_symnext (representation,nr,count,mat1);
- % computes the symmetry adapted basis of component V(nr count)
- % internal structure for in and out -- count > 2
- % bas1 -- internal matrix
- % output matrix
- begin
- scalar veclist1, veclist2, mapping, v;
- mapping:=mk!_mapping(representation,nr,count);
- veclist1:=mat!+veclist(mat1);
- veclist2:= for each v in veclist1 collect
- mk!+mat!+mult!+vec(mapping,v);
- return mk!+internal!+mat(veclist2);
- end;
- symbolic procedure mk!_sym!_basis (representation);
- % computes the complete symmetry adapted basis
- % internal structure for in and out
- begin
- scalar nr,anz,group,dimen,mats,matels,mat1,mat2;
- group:=get!_group!_in(representation);
- anz:=get!_nr!_irred!_reps(group);
- mats:=for nr := 1:anz join
- if not(null(mk!_multiplicity(representation,nr))) then
- <<
- if get!_dim!_irred!_reps(group,nr)=1 then
- mat1:=mk!_part!_sym (representation,nr)
- else
- mat1:=mk!_part!_sym1 (representation,nr);
- if (not(!*complex) and
- get!*real!*comp!*chartype!*p(group,nr)) then
- <<
- matels:=list(mat1);
- >> else
- <<
- if get!_dim!_irred!_reps(group,nr)=1 then
- <<
- matels:=list(mat1);
- >> else
- <<
- matels:=
- for dimen:=2:get!_dim!_irred!_reps(group,nr) collect
- mk!_part!_symnext(representation,nr,dimen,mat1);
- matels:=append(list(mat1),matels);
- >>;
- >>;
- matels
- >>;
- if length(mats)<1 then rederr("no mats in mk!_sym!_basis");
- mat2:=car mats;
- for each mat1 in cdr mats do
- mat2:=add!+two!+mats(mat2,mat1);
- return mat2;
- end;
- symbolic procedure mk!_part!_sym!_all (representation,nr);
- % computes the complete symmetry adapted basis
- % internal structure for in and out
- begin
- scalar group,dimen,matels,mat1,mat2;
- group:=get!_group!_in(representation);
- if get!_dim!_irred!_reps(group,nr)=1 then
- mat1:=mk!_part!_sym (representation,nr)
- else
- <<
- mat1:=mk!_part!_sym1 (representation,nr);
- if (not(!*complex) and
- get!*real!*comp!*chartype!*p(group,nr)) then
- <<
- mat1:=mat1;
- >> else
- <<
- if get!_dim!_irred!_reps(group,nr)>1 then
- << matels:=
- for dimen:=2:get!_dim!_irred!_reps(group,nr) collect
- mk!_part!_symnext(representation,nr,dimen,mat1);
- for each mat2 in matels do
- mat1:=add!+two!+mats(mat1,mat2);
- >>;
- >>;
- >>;
- return mat1;
- end;
- symbolic procedure mk!_diagonal (matrix1,representation);
- % computes the matrix in diagonal form
- % internal structure for in and out
- begin
- scalar nr,anz,mats,group,mat1,diamats,matdia,dimen;
- group:=get!_group!_in(representation);
- anz:=get!_nr!_irred!_reps(group);
- mats:=for nr := 1:anz join
- if not(null(mk!_multiplicity(representation,nr))) then
- <<
- if get!_dim!_irred!_reps(group,nr)=1 then
- mat1:=mk!_part!_sym (representation,nr)
- else
- mat1:=mk!_part!_sym1 (representation,nr);
- % if (not(!*complex) and
- % get!*real!*comp!*chartype!*p(group,nr)) then
- % mat1:=add!+two!+mats(mat1,
- % mk!_part!_symnext(representation,nr,2,mat1));
- matdia:= mk!+mat!*mat!*mat(
- mk!+hermitean!+matrix(mat1),matrix1,mat1
- );
- if (not(!*complex) and
- get!*real!*comp!*chartype!*p(group,nr)) then
- <<
- diamats:=list(matdia);
- >> else
- <<
- diamats:=
- for dimen:=1:get!_dim!_irred!_reps(group,nr) collect
- matdia;
- >>;
- diamats
- >>;
- mats:=mk!+block!+diagonal!+mat(mats);
- if !*outerzeroscheck then
- if not(correct!_diagonal!_p(matrix1,representation,mats)) then
- rederr("wrong diagonalisation");
- return mats;
- end;
- endmodule;
- % Data for symmetry package, part 1.
- % symbolic$ % Turning this on here causes problems with some builds.
- set!*elems!*group('z2,'(id sz2))$
- set!*generators('z2,'(sz2))$
- set!*relations('z2,'(((sz2 sz2) (id))))$
- set!*grouptable('z2,'((grouptable id sz2) (id id sz2) (sz2 sz2 id)))$
- set!*inverse('z2,'((id sz2) (id sz2)))$
- set!*elemasgen('z2,'(((sz2) (sz2))))$
- set!*group('z2,'((id) (sz2)))$
- set!*representation('z2,'((id (((1 . 1)))) (sz2 (((1 . 1))))),'complex)$
- set!*representation('z2,
- '((id (((1 . 1)))) (sz2 (((-1 . 1))))),'complex)$
- set!*representation('z2,
- '(realtype (id (((1 . 1)))) (sz2 (((1 . 1))))),'real)$
- set!*representation('z2,
- '(realtype (id (((1 . 1)))) (sz2 (((-1 . 1))))),'real)$
- set!*available 'z2$
- set!*elems!*group('k4,'(id s1k4 s2k4 rk4))$
- set!*generators('k4,'(s1k4 s2k4))$
- set!*relations('k4,
- '(((s1k4 s1k4) (id))
- ((s2k4 s2k4) (id))
- ((s1k4 s2k4) (s2k4 s1k4))))$
- set!*grouptable('k4,
- '((grouptable id s1k4 s2k4 rk4)
- (id id s1k4 s2k4 rk4)
- (s1k4 s1k4 id rk4 s2k4)
- (s2k4 s2k4 rk4 id s1k4)
- (rk4 rk4 s2k4 s1k4 id)))$
- set!*inverse('k4,'((id s1k4 s2k4 rk4) (id s1k4 s2k4 rk4)))$
- set!*elemasgen('k4,
- '(((s1k4) (s1k4)) ((s2k4) (s2k4)) ((rk4) (s1k4 s2k4))))$
- set!*group('k4,'((id) (s1k4) (s2k4) (rk4)))$
- set!*representation('k4,
- '((id (((1 . 1))))
- (s1k4 (((1 . 1))))
- (s2k4 (((1 . 1))))
- (rk4 (((1 . 1))))),'complex)$
- set!*representation('k4,
- '((id (((1 . 1))))
- (s1k4 (((-1 . 1))))
- (s2k4 (((1 . 1))))
- (rk4 (((-1 . 1))))),'complex)$
- set!*representation('k4,
- '((id (((1 . 1))))
- (s1k4 (((1 . 1))))
- (s2k4 (((-1 . 1))))
- (rk4 (((-1 . 1))))),'complex)$
- set!*representation('k4,
- '((id (((1 . 1))))
- (s1k4 (((-1 . 1))))
- (s2k4 (((-1 . 1))))
- (rk4 (((1 . 1))))),'complex)$
- set!*representation('k4,
- '(realtype
- (id (((1 . 1))))
- (s1k4 (((1 . 1))))
- (s2k4 (((1 . 1))))
- (rk4 (((1 . 1))))),'real)$
- set!*representation('k4,
- '(realtype
- (id (((1 . 1))))
- (s1k4 (((-1 . 1))))
- (s2k4 (((1 . 1))))
- (rk4 (((-1 . 1))))),'real)$
- set!*representation('k4,
- '(realtype
- (id (((1 . 1))))
- (s1k4 (((1 . 1))))
- (s2k4 (((-1 . 1))))
- (rk4 (((-1 . 1))))),'real)$
- set!*representation('k4,
- '(realtype
- (id (((1 . 1))))
- (s1k4 (((-1 . 1))))
- (s2k4 (((-1 . 1))))
- (rk4 (((1 . 1))))),'real)$
- set!*available 'k4$
- set!*elems!*group('d3,'(id rd3 rot2d3 sd3 srd3 sr2d3))$
- set!*generators('d3,'(rd3 sd3))$
- set!*relations('d3,
- '(((sd3 sd3) (id))
- ((rd3 rd3 rd3) (id))
- ((sd3 rd3 sd3) (rd3 rd3))))$
- set!*grouptable('d3,
- '((grouptable id rd3 rot2d3 sd3 srd3 sr2d3)
- (id id rd3 rot2d3 sd3 srd3 sr2d3)
- (rd3 rd3 rot2d3 id sr2d3 sd3 srd3)
- (rot2d3 rot2d3 id rd3 srd3 sr2d3 sd3)
- (sd3 sd3 srd3 sr2d3 id rd3 rot2d3)
- (srd3 srd3 sr2d3 sd3 rot2d3 id rd3)
- (sr2d3 sr2d3 sd3 srd3 rd3 rot2d3 id)))$
- set!*inverse('d3,
- '((id rd3 rot2d3 sd3 srd3 sr2d3) (id rot2d3 rd3 sd3 srd3 sr2d3)))$
- set!*elemasgen('d3,
- '(((rd3) (rd3))
- ((rot2d3) (rd3 rd3))
- ((sd3) (sd3))
- ((srd3) (sd3 rd3))
- ((sr2d3) (sd3 rd3 rd3))))$
- set!*group('d3,'((id) (rd3 rot2d3) (sr2d3 sd3 srd3)))$
- set!*representation('d3,
- '((id (((1 . 1))))
- (rd3 (((1 . 1))))
- (rot2d3 (((1 . 1))))
- (sd3 (((1 . 1))))
- (srd3 (((1 . 1))))
- (sr2d3 (((1 . 1))))),'complex)$
- set!*representation('d3,
- '((id (((1 . 1))))
- (rd3 (((1 . 1))))
- (rot2d3 (((1 . 1))))
- (sd3 (((-1 . 1))))
- (srd3 (((-1 . 1))))
- (sr2d3 (((-1 . 1))))),'complex)$
- set!*representation('d3,
- '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (rot2d3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (sd3 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr2d3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (1 . 2))))),'complex)$
- set!*representation('d3,
- '(realtype
- (id (((1 . 1))))
- (rd3 (((1 . 1))))
- (rot2d3 (((1 . 1))))
- (sd3 (((1 . 1))))
- (srd3 (((1 . 1))))
- (sr2d3 (((1 . 1))))),'real)$
- set!*representation('d3,
- '(realtype
- (id (((1 . 1))))
- (rd3 (((1 . 1))))
- (rot2d3 (((1 . 1))))
- (sd3 (((-1 . 1))))
- (srd3 (((-1 . 1))))
- (sr2d3 (((-1 . 1))))),'real)$
- set!*representation('d3,
- '(realtype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (rot2d3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (sd3 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr2d3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (1 . 2))))),'real)$
- set!*available 'd3$
- set!*elems!*group('d4,'(id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4))$
- set!*generators('d4,'(rd4 sd4))$
- set!*relations('d4,
- '(((sd4 sd4) (id))
- ((rd4 rd4 rd4 rd4) (id))
- ((sd4 rd4 sd4) (rd4 rd4 rd4))))$
- set!*grouptable('d4,
- '((grouptable id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4)
- (id id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4)
- (rd4 rd4 rot2d4 rot3d4 id sr3d4 sd4 srd4 sr2d4)
- (rot2d4 rot2d4 rot3d4 id rd4 sr2d4 sr3d4 sd4 srd4)
- (rot3d4 rot3d4 id rd4 rot2d4 srd4 sr2d4 sr3d4 sd4)
- (sd4 sd4 srd4 sr2d4 sr3d4 id rd4 rot2d4 rot3d4)
- (srd4 srd4 sr2d4 sr3d4 sd4 rot3d4 id rd4 rot2d4)
- (sr2d4 sr2d4 sr3d4 sd4 srd4 rot2d4 rot3d4 id rd4)
- (sr3d4 sr3d4 sd4 srd4 sr2d4 rd4 rot2d4 rot3d4 id)))$
- set!*inverse('d4,
- '((id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4)
- (id rot3d4 rot2d4 rd4 sd4 srd4 sr2d4 sr3d4)))$
- set!*elemasgen('d4,
- '(((rd4) (rd4))
- ((rot2d4) (rd4 rd4))
- ((rot3d4) (rd4 rd4 rd4))
- ((sd4) (sd4))
- ((srd4) (sd4 rd4))
- ((sr2d4) (sd4 rd4 rd4))
- ((sr3d4) (sd4 rd4 rd4 rd4))))$
- set!*group('d4,'((id) (rd4 rot3d4) (rot2d4) (sd4 sr2d4) (sr3d4 srd4)))$
- set!*representation('d4,
- '((id (((1 . 1))))
- (rd4 (((1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((1 . 1))))
- (sd4 (((1 . 1))))
- (srd4 (((1 . 1))))
- (sr2d4 (((1 . 1))))
- (sr3d4 (((1 . 1))))),'complex)$
- set!*representation('d4,
- '((id (((1 . 1))))
- (rd4 (((1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((1 . 1))))
- (sd4 (((-1 . 1))))
- (srd4 (((-1 . 1))))
- (sr2d4 (((-1 . 1))))
- (sr3d4 (((-1 . 1))))),'complex)$
- set!*representation('d4,
- '((id (((1 . 1))))
- (rd4 (((-1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((-1 . 1))))
- (sd4 (((1 . 1))))
- (srd4 (((-1 . 1))))
- (sr2d4 (((1 . 1))))
- (sr3d4 (((-1 . 1))))),'complex)$
- set!*representation('d4,
- '((id (((1 . 1))))
- (rd4 (((-1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((-1 . 1))))
- (sd4 (((-1 . 1))))
- (srd4 (((1 . 1))))
- (sr2d4 (((-1 . 1))))
- (sr3d4 (((1 . 1))))),'complex)$
- set!*representation('d4,
- '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd4 (((nil . 1) (1 . 1)) ((-1 . 1) (nil . 1))))
- (rot2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (rot3d4 (((nil . 1) (-1 . 1)) ((1 . 1) (nil . 1))))
- (sd4 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd4 (((nil . 1) (1 . 1)) ((1 . 1) (nil . 1))))
- (sr2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (sr3d4 (((nil . 1) (-1 . 1)) ((-1 . 1) (nil . 1))))),
- 'complex)$
- set!*representation('d4,
- '(realtype
- (id (((1 . 1))))
- (rd4 (((1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((1 . 1))))
- (sd4 (((1 . 1))))
- (srd4 (((1 . 1))))
- (sr2d4 (((1 . 1))))
- (sr3d4 (((1 . 1))))),'real)$
- set!*representation('d4,
- '(realtype
- (id (((1 . 1))))
- (rd4 (((1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((1 . 1))))
- (sd4 (((-1 . 1))))
- (srd4 (((-1 . 1))))
- (sr2d4 (((-1 . 1))))
- (sr3d4 (((-1 . 1))))),'real)$
- set!*representation('d4,
- '(realtype
- (id (((1 . 1))))
- (rd4 (((-1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((-1 . 1))))
- (sd4 (((1 . 1))))
- (srd4 (((-1 . 1))))
- (sr2d4 (((1 . 1))))
- (sr3d4 (((-1 . 1))))),'real)$
- set!*representation('d4,
- '(realtype
- (id (((1 . 1))))
- (rd4 (((-1 . 1))))
- (rot2d4 (((1 . 1))))
- (rot3d4 (((-1 . 1))))
- (sd4 (((-1 . 1))))
- (srd4 (((1 . 1))))
- (sr2d4 (((-1 . 1))))
- (sr3d4 (((1 . 1))))),'real)$
- set!*representation('d4,
- '(realtype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd4 (((nil . 1) (1 . 1)) ((-1 . 1) (nil . 1))))
- (rot2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (rot3d4 (((nil . 1) (-1 . 1)) ((1 . 1) (nil . 1))))
- (sd4 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd4 (((nil . 1) (1 . 1)) ((1 . 1) (nil . 1))))
- (sr2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (sr3d4 (((nil . 1) (-1 . 1)) ((-1 . 1) (nil . 1))))),
- 'real)$
- set!*available 'd4$
- set!*elems!*group('d5,
- '(id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5))$
- set!*generators('d5,'(rd5 sd5))$
- set!*relations('d5,
- '(((sd5 sd5) (id))
- ((rd5 rd5 rd5 rd5 rd5) (id))
- ((sd5 rd5 sd5) (rd5 rd5 rd5 rd5))))$
- set!*grouptable('d5,
- '((grouptable id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5)
- (id id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5)
- (rd5 rd5 r2d5 r3d5 r4d5 id sr4d5 sd5 srd5 sr2d5 sr3d5)
- (r2d5 r2d5 r3d5 r4d5 id rd5 sr3d5 sr4d5 sd5 srd5 sr2d5)
- (r3d5 r3d5 r4d5 id rd5 r2d5 sr2d5 sr3d5 sr4d5 sd5 srd5)
- (r4d5 r4d5 id rd5 r2d5 r3d5 srd5 sr2d5 sr3d5 sr4d5 sd5)
- (sd5 sd5 srd5 sr2d5 sr3d5 sr4d5 id rd5 r2d5 r3d5 r4d5)
- (srd5 srd5 sr2d5 sr3d5 sr4d5 sd5 r4d5 id rd5 r2d5 r3d5)
- (sr2d5 sr2d5 sr3d5 sr4d5 sd5 srd5 r3d5 r4d5 id rd5 r2d5)
- (sr3d5 sr3d5 sr4d5 sd5 srd5 sr2d5 r2d5 r3d5 r4d5 id rd5)
- (sr4d5 sr4d5 sd5 srd5 sr2d5 sr3d5 rd5 r2d5 r3d5 r4d5 id)))$
- set!*inverse('d5,
- '((id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5)
- (id r4d5 r3d5 r2d5 rd5 sd5 srd5 sr2d5 sr3d5 sr4d5)))$
- set!*elemasgen('d5,
- '(((rd5) (rd5))
- ((r2d5) (rd5 rd5))
- ((r3d5) (rd5 rd5 rd5))
- ((r4d5) (rd5 rd5 rd5 rd5))
- ((sd5) (sd5))
- ((srd5) (sd5 rd5))
- ((sr2d5) (sd5 rd5 rd5))
- ((sr3d5) (sd5 rd5 rd5 rd5))
- ((sr4d5) (sd5 rd5 rd5 rd5 rd5))))$
- set!*group('d5,
- '((id) (rd5 r4d5) (r2d5 r3d5) (srd5 sr2d5 sd5 sr4d5 sr3d5)))$
- set!*representation('d5,
- '((id (((1 . 1))))
- (rd5 (((1 . 1))))
- (r2d5 (((1 . 1))))
- (r3d5 (((1 . 1))))
- (r4d5 (((1 . 1))))
- (sd5 (((1 . 1))))
- (srd5 (((1 . 1))))
- (sr2d5 (((1 . 1))))
- (sr3d5 (((1 . 1))))
- (sr4d5 (((1 . 1))))),'complex)$
- set!*representation('d5,
- '((id (((1 . 1))))
- (rd5 (((1 . 1))))
- (r2d5 (((1 . 1))))
- (r3d5 (((1 . 1))))
- (r4d5 (((1 . 1))))
- (sd5 (((-1 . 1))))
- (srd5 (((-1 . 1))))
- (sr2d5 (((-1 . 1))))
- (sr3d5 (((-1 . 1))))
- (sr4d5 (((-1 . 1))))),'complex)$
- set!*representation('d5,
- '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd5
- (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1))))
- (r2d5
- (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . 2)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1))))
- (r3d5
- (((((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3) . -1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 3)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1))))
- (r4d5
- (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . 4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . -4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . 4)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1))))
- (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd5
- (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1)
- (((((cos (quotient (times 2 pi) 5)) . 1) . -1)) . 1))))
- (sr2d5
- (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -1))
- . 1))))
- (sr3d5
- (((((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3) . 1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . 3))
- (((cos (quotient (times 2 pi) 5)) . 3) . -1))
- . 1))))
- (sr4d5
- (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . 4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . 4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 4) . -1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . 6))
- (((cos (quotient (times 2 pi) 5)) . 4) . -1))
- . 1))))),'complex)$
- set!*representation('d5,
- '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd5
- (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1))))
- (r2d5
- (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . 2)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1))))
- (r3d5
- (((((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3) . -1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 3)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1))))
- (r4d5
- (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . 4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . -4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . 4)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1))))
- (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd5
- (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1)
- (((((cos (quotient (times 4 pi) 5)) . 1) . -1)) . 1))))
- (sr2d5
- (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -1))
- . 1))))
- (sr3d5
- (((((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3) . 1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . 3))
- (((cos (quotient (times 4 pi) 5)) . 3) . -1))
- . 1))))
- (sr4d5
- (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . 4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . 4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 4) . -1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . 6))
- (((cos (quotient (times 4 pi) 5)) . 4) . -1))
- . 1))))),'complex)$
- set!*representation('d5,
- '(realtype
- (id (((1 . 1))))
- (rd5 (((1 . 1))))
- (r2d5 (((1 . 1))))
- (r3d5 (((1 . 1))))
- (r4d5 (((1 . 1))))
- (sd5 (((1 . 1))))
- (srd5 (((1 . 1))))
- (sr2d5 (((1 . 1))))
- (sr3d5 (((1 . 1))))
- (sr4d5 (((1 . 1))))),'real)$
- set!*representation('d5,
- '(realtype
- (id (((1 . 1))))
- (rd5 (((1 . 1))))
- (r2d5 (((1 . 1))))
- (r3d5 (((1 . 1))))
- (r4d5 (((1 . 1))))
- (sd5 (((-1 . 1))))
- (srd5 (((-1 . 1))))
- (sr2d5 (((-1 . 1))))
- (sr3d5 (((-1 . 1))))
- (sr4d5 (((-1 . 1))))),'real)$
- set!*representation('d5,
- '(realtype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd5
- (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1))))
- (r2d5
- (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . 2)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1))))
- (r3d5
- (((((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3) . -1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 3)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1))))
- (r4d5
- (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . 4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . -4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . 4)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1))))
- (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd5
- (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1)
- (((((cos (quotient (times 2 pi) 5)) . 1) . -1)) . 1))))
- (sr2d5
- (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -1))
- . 1))))
- (sr3d5
- (((((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3) . 1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . 3))
- (((cos (quotient (times 2 pi) 5)) . 3) . -1))
- . 1))))
- (sr4d5
- (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . 4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . 4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 4) . -1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . 6))
- (((cos (quotient (times 2 pi) 5)) . 4) . -1))
- . 1))))),'real)$
- set!*representation('d5,
- '(realtype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd5
- (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1))))
- (r2d5
- (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . 2)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1))))
- (r3d5
- (((((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3) . -1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 3)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1))))
- (r4d5
- (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . 4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . -4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . 4)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1))))
- (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd5
- (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1)
- (((((cos (quotient (times 4 pi) 5)) . 1) . -1)) . 1))))
- (sr2d5
- (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -1))
- . 1))))
- (sr3d5
- (((((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3) . 1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . 3))
- (((cos (quotient (times 4 pi) 5)) . 3) . -1))
- . 1))))
- (sr4d5
- (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . 4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . 4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 4) . -1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . 6))
- (((cos (quotient (times 4 pi) 5)) . 4) . -1))
- . 1))))),'real)$
- set!*available 'd5$
- set!*elems!*group('d6,
- '(id
- rd6
- r2d6
- r3d6
- r4d6
- r5d6
- sd6
- srd6
- sr2d6
- sr3d6
- sr4d6
- sr5d6))$
- set!*generators('d6,'(rd6 sd6))$
- set!*relations('d6,
- '(((sd6 sd6) (id))
- ((rd6 rd6 rd6 rd6 rd6 rd6) (id))
- ((sd6 rd6 sd6) (rd6 rd6 rd6 rd6 rd6))))$
- set!*grouptable('d6,
- '((grouptable
- id
- rd6
- r2d6
- r3d6
- r4d6
- r5d6
- sd6
- srd6
- sr2d6
- sr3d6
- sr4d6
- sr5d6)
- (id
- id
- rd6
- r2d6
- r3d6
- r4d6
- r5d6
- sd6
- srd6
- sr2d6
- sr3d6
- sr4d6
- sr5d6)
- (rd6
- rd6
- r2d6
- r3d6
- r4d6
- r5d6
- id
- sr5d6
- sd6
- srd6
- sr2d6
- sr3d6
- sr4d6)
- (r2d6
- r2d6
- r3d6
- r4d6
- r5d6
- id
- rd6
- sr4d6
- sr5d6
- sd6
- srd6
- sr2d6
- sr3d6)
- (r3d6
- r3d6
- r4d6
- r5d6
- id
- rd6
- r2d6
- sr3d6
- sr4d6
- sr5d6
- sd6
- srd6
- sr2d6)
- (r4d6
- r4d6
- r5d6
- id
- rd6
- r2d6
- r3d6
- sr2d6
- sr3d6
- sr4d6
- sr5d6
- sd6
- srd6)
- (r5d6
- r5d6
- id
- rd6
- r2d6
- r3d6
- r4d6
- srd6
- sr2d6
- sr3d6
- sr4d6
- sr5d6
- sd6)
- (sd6
- sd6
- srd6
- sr2d6
- sr3d6
- sr4d6
- sr5d6
- id
- rd6
- r2d6
- r3d6
- r4d6
- r5d6)
- (srd6
- srd6
- sr2d6
- sr3d6
- sr4d6
- sr5d6
- sd6
- r5d6
- id
- rd6
- r2d6
- r3d6
- r4d6)
- (sr2d6
- sr2d6
- sr3d6
- sr4d6
- sr5d6
- sd6
- srd6
- r4d6
- r5d6
- id
- rd6
- r2d6
- r3d6)
- (sr3d6
- sr3d6
- sr4d6
- sr5d6
- sd6
- srd6
- sr2d6
- r3d6
- r4d6
- r5d6
- id
- rd6
- r2d6)
- (sr4d6
- sr4d6
- sr5d6
- sd6
- srd6
- sr2d6
- sr3d6
- r2d6
- r3d6
- r4d6
- r5d6
- id
- rd6)
- (sr5d6
- sr5d6
- sd6
- srd6
- sr2d6
- sr3d6
- sr4d6
- rd6
- r2d6
- r3d6
- r4d6
- r5d6
- id)))$
- set!*inverse('d6,
- '((id rd6 r2d6 r3d6 r4d6 r5d6 sd6 srd6 sr2d6 sr3d6 sr4d6 sr5d6)
- (id r5d6 r4d6 r3d6 r2d6 rd6 sd6 srd6 sr2d6 sr3d6 sr4d6 sr5d6)))$
- set!*elemasgen('d6,
- '(((rd6) (rd6))
- ((r2d6) (rd6 rd6))
- ((r3d6) (rd6 rd6 rd6))
- ((r4d6) (rd6 rd6 rd6 rd6))
- ((r5d6) (rd6 rd6 rd6 rd6 rd6))
- ((sd6) (sd6))
- ((srd6) (sd6 rd6))
- ((sr2d6) (sd6 rd6 rd6))
- ((sr3d6) (sd6 rd6 rd6 rd6))
- ((sr4d6) (sd6 rd6 rd6 rd6 rd6))
- ((sr5d6) (sd6 rd6 rd6 rd6 rd6 rd6))))$
- set!*group('d6,
- '((id)
- (rd6 r5d6)
- (r2d6 r4d6)
- (r3d6)
- (sr2d6 sd6 sr4d6)
- (srd6 sr5d6 sr3d6)))$
- set!*representation('d6,
- '((id (((1 . 1))))
- (rd6 (((1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((1 . 1))))
- (sd6 (((1 . 1))))
- (srd6 (((1 . 1))))
- (sr2d6 (((1 . 1))))
- (sr3d6 (((1 . 1))))
- (sr4d6 (((1 . 1))))
- (sr5d6 (((1 . 1))))),'complex)$
- set!*representation('d6,
- '((id (((1 . 1))))
- (rd6 (((1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((1 . 1))))
- (sd6 (((-1 . 1))))
- (srd6 (((-1 . 1))))
- (sr2d6 (((-1 . 1))))
- (sr3d6 (((-1 . 1))))
- (sr4d6 (((-1 . 1))))
- (sr5d6 (((-1 . 1))))),'complex)$
- set!*representation('d6,
- '((id (((1 . 1))))
- (rd6 (((-1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((-1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((-1 . 1))))
- (sd6 (((1 . 1))))
- (srd6 (((-1 . 1))))
- (sr2d6 (((1 . 1))))
- (sr3d6 (((-1 . 1))))
- (sr4d6 (((1 . 1))))
- (sr5d6 (((-1 . 1))))),'complex)$
- set!*representation('d6,
- '((id (((1 . 1))))
- (rd6 (((-1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((-1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((-1 . 1))))
- (sd6 (((-1 . 1))))
- (srd6 (((1 . 1))))
- (sr2d6 (((-1 . 1))))
- (sr3d6 (((1 . 1))))
- (sr4d6 (((-1 . 1))))
- (sr5d6 (((1 . 1))))),'complex)$
- set!*representation('d6,
- '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
- (r2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (r4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r5d6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (sr2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (sr4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
- (sr5d6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))),'complex)$
- set!*representation('d6,
- '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r3d6 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (r4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r5d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
- (sr3d6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (sr4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr5d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (1 . 2))))),'complex)$
- set!*representation('d6,
- '(realtype
- (id (((1 . 1))))
- (rd6 (((1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((1 . 1))))
- (sd6 (((1 . 1))))
- (srd6 (((1 . 1))))
- (sr2d6 (((1 . 1))))
- (sr3d6 (((1 . 1))))
- (sr4d6 (((1 . 1))))
- (sr5d6 (((1 . 1))))),'real)$
- set!*representation('d6,
- '(realtype
- (id (((1 . 1))))
- (rd6 (((1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((1 . 1))))
- (sd6 (((-1 . 1))))
- (srd6 (((-1 . 1))))
- (sr2d6 (((-1 . 1))))
- (sr3d6 (((-1 . 1))))
- (sr4d6 (((-1 . 1))))
- (sr5d6 (((-1 . 1))))),'real)$
- set!*representation('d6,
- '(realtype
- (id (((1 . 1))))
- (rd6 (((-1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((-1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((-1 . 1))))
- (sd6 (((1 . 1))))
- (srd6 (((-1 . 1))))
- (sr2d6 (((1 . 1))))
- (sr3d6 (((-1 . 1))))
- (sr4d6 (((1 . 1))))
- (sr5d6 (((-1 . 1))))),'real)$
- set!*representation('d6,
- '(realtype
- (id (((1 . 1))))
- (rd6 (((-1 . 1))))
- (r2d6 (((1 . 1))))
- (r3d6 (((-1 . 1))))
- (r4d6 (((1 . 1))))
- (r5d6 (((-1 . 1))))
- (sd6 (((-1 . 1))))
- (srd6 (((1 . 1))))
- (sr2d6 (((-1 . 1))))
- (sr3d6 (((1 . 1))))
- (sr4d6 (((-1 . 1))))
- (sr5d6 (((1 . 1))))),'real)$
- set!*representation('d6,
- '(realtype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
- (r2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (r4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r5d6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (sr2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (sr4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
- (sr5d6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))),'real)$
- set!*representation('d6,
- '(realtype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rd6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r3d6 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (r4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r5d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (srd6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr2d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
- (sr3d6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (sr4d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (sr5d6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (1 . 2))))),'real)$
- set!*available 'd6$
- set!*elems!*group('c3,'(id rc3 r2c3))$
- set!*generators('c3,'(rc3))$
- set!*relations('c3,'(((rc3 rc3 rc3) (id))))$
- set!*grouptable('c3,
- '((grouptable id rc3 r2c3)
- (id id rc3 r2c3)
- (rc3 rc3 r2c3 id)
- (r2c3 r2c3 id rc3)))$
- set!*inverse('c3,'((id rc3 r2c3) (id r2c3 rc3)))$
- set!*elemasgen('c3,'(((rc3) (rc3)) ((r2c3) (rc3 rc3))))$
- set!*group('c3,'((id) (rc3) (r2c3)))$
- set!*representation('c3,
- '((id (((1 . 1)))) (rc3 (((1 . 1)))) (r2c3 (((1 . 1))))),
- 'complex)$
- set!*representation('c3,
- '((id (((1 . 1))))
- (rc3
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))
- (r2c3
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))),'complex)$
- set!*representation('c3,
- '((id (((1 . 1))))
- (rc3
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))
- (r2c3
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))),'complex)$
- set!*representation('c3,
- '(realtype
- (id (((1 . 1))))
- (rc3 (((1 . 1))))
- (r2c3 (((1 . 1))))),'real)$
- set!*representation('c3,
- '(complextype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rc3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r2c3
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))),'real)$
- set!*available 'c3$
- set!*elems!*group('c4,'(id rc4 r2c4 r3c4))$
- set!*generators('c4,'(rc4))$
- set!*relations('c4,'(((rc4 rc4 rc4 rc4) (id))))$
- set!*grouptable('c4,
- '((grouptable id rc4 r2c4 r3c4)
- (id id rc4 r2c4 r3c4)
- (rc4 rc4 r2c4 r3c4 id)
- (r2c4 r2c4 r3c4 id rc4)
- (r3c4 r3c4 id rc4 r2c4)))$
- set!*inverse('c4,'((id rc4 r2c4 r3c4) (id r3c4 r2c4 rc4)))$
- set!*elemasgen('c4,
- '(((rc4) (rc4)) ((r2c4) (rc4 rc4)) ((r3c4) (rc4 rc4 rc4))))$
- set!*group('c4,'((id) (rc4) (r2c4) (r3c4)))$
- set!*representation('c4,
- '((id (((1 . 1))))
- (rc4 (((1 . 1))))
- (r2c4 (((1 . 1))))
- (r3c4 (((1 . 1))))),'complex)$
- set!*representation('c4,
- '((id (((1 . 1))))
- (rc4 (((-1 . 1))))
- (r2c4 (((1 . 1))))
- (r3c4 (((-1 . 1))))),'complex)$
- set!*representation('c4,
- '((id (((1 . 1))))
- (rc4 ((((((i . 1) . 1)) . 1))))
- (r2c4 (((-1 . 1))))
- (r3c4 ((((((i . 1) . -1)) . 1))))),'complex)$
- set!*representation('c4,
- '((id (((1 . 1))))
- (rc4 ((((((i . 1) . -1)) . 1))))
- (r2c4 (((-1 . 1))))
- (r3c4 ((((((i . 1) . 1)) . 1))))),'complex)$
- set!*representation('c4,
- '(realtype
- (id (((1 . 1))))
- (rc4 (((1 . 1))))
- (r2c4 (((1 . 1))))
- (r3c4 (((1 . 1))))),'real)$
- set!*representation('c4,
- '(realtype
- (id (((1 . 1))))
- (rc4 (((-1 . 1))))
- (r2c4 (((1 . 1))))
- (r3c4 (((-1 . 1))))),'real)$
- set!*representation('c4,
- '(complextype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rc4 (((nil . 1) (-1 . 1)) ((1 . 1) (nil . 1))))
- (r2c4 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (r3c4 (((nil . 1) (1 . 1)) ((-1 . 1) (nil . 1))))),'real)$
- set!*available 'c4$
- set!*elems!*group('c5,'(id rc5 r2c5 r3c5 r4c5))$
- set!*generators('c5,'(rc5))$
- set!*relations('c5,'(((rc5 rc5 rc5 rc5 rc5) (id))))$
- set!*grouptable('c5,
- '((grouptable id rc5 r2c5 r3c5 r4c5)
- (id id rc5 r2c5 r3c5 r4c5)
- (rc5 rc5 r2c5 r3c5 r4c5 id)
- (r2c5 r2c5 r3c5 r4c5 id rc5)
- (r3c5 r3c5 r4c5 id rc5 r2c5)
- (r4c5 r4c5 id rc5 r2c5 r3c5)))$
- set!*inverse('c5,'((id rc5 r2c5 r3c5 r4c5) (id r4c5 r3c5 r2c5 rc5)))$
- set!*elemasgen('c5,
- '(((rc5) (rc5))
- ((r2c5) (rc5 rc5))
- ((r3c5) (rc5 rc5 rc5))
- ((r4c5) (rc5 rc5 rc5 rc5))))$
- set!*group('c5,'((id) (rc5) (r2c5) (r3c5) (r4c5)))$
- set!*representation('c5,
- '((id (((1 . 1))))
- (rc5 (((1 . 1))))
- (r2c5 (((1 . 1))))
- (r3c5 (((1 . 1))))
- (r4c5 (((1 . 1))))),'complex)$
- set!*representation('c5,
- '((id (((1 . 1))))
- (rc5
- (((((((sin (quotient (times 2 pi) 5)) . 1) ((i . 1) . 1))
- (((cos (quotient (times 2 pi) 5)) . 1) . 1))
- . 1))))
- (r2c5
- (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1)
- ((i . 1) . 2)))
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1))))
- (r3c5
- (((((((sin (quotient (times 2 pi) 5)) . 3)
- ((i . 1) . -1))
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2)
- ((i . 1) . 3)))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1))))
- (r4c5
- (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1)
- ((i . 1) . -4)))
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3)
- ((i . 1) . 4)))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1))))),'complex)$
- set!*representation('c5,
- '((id (((1 . 1))))
- (rc5
- (((((((sin (quotient (times 4 pi) 5)) . 1) ((i . 1) . 1))
- (((cos (quotient (times 4 pi) 5)) . 1) . 1))
- . 1))))
- (r2c5
- (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1)
- ((i . 1) . 2)))
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1))))
- (r3c5
- (((((((sin (quotient (times 4 pi) 5)) . 3)
- ((i . 1) . -1))
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2)
- ((i . 1) . 3)))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1))))
- (r4c5
- (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1)
- ((i . 1) . -4)))
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3)
- ((i . 1) . 4)))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1))))),'complex)$
- set!*representation('c5,
- '((id (((1 . 1))))
- (rc5
- (((((((sin (quotient (times 4 pi) 5)) . 1)
- ((i . 1) . -1))
- (((cos (quotient (times 4 pi) 5)) . 1) . 1))
- . 1))))
- (r2c5
- (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1)
- ((i . 1) . -2)))
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1))))
- (r3c5
- (((((((sin (quotient (times 4 pi) 5)) . 3) ((i . 1) . 1))
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2)
- ((i . 1) . -3)))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1))))
- (r4c5
- (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1)
- ((i . 1) . 4)))
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3)
- ((i . 1) . -4)))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1))))),'complex)$
- set!*representation('c5,
- '((id (((1 . 1))))
- (rc5
- (((((((sin (quotient (times 2 pi) 5)) . 1)
- ((i . 1) . -1))
- (((cos (quotient (times 2 pi) 5)) . 1) . 1))
- . 1))))
- (r2c5
- (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1)
- ((i . 1) . -2)))
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1))))
- (r3c5
- (((((((sin (quotient (times 2 pi) 5)) . 3) ((i . 1) . 1))
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2)
- ((i . 1) . -3)))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1))))
- (r4c5
- (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1)
- ((i . 1) . 4)))
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3)
- ((i . 1) . -4)))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1))))),'complex)$
- set!*representation('c5,
- '(realtype
- (id (((1 . 1))))
- (rc5 (((1 . 1))))
- (r2c5 (((1 . 1))))
- (r3c5 (((1 . 1))))
- (r4c5 (((1 . 1))))),'real)$
- set!*representation('c5,
- '(complextype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rc5
- (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
- (((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1))))
- (r2c5
- (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 1) . 2)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2) . -1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 1))
- . 1))))
- (r3c5
- (((((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3) . -1)
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 2) . 3)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 1) . -3))
- (((cos (quotient (times 2 pi) 5)) . 3) . 1))
- . 1))))
- (r4c5
- (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . 4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 2 pi) 5)) . 3)
- (((cos (quotient (times 2 pi) 5)) . 1) . -4))
- (((sin (quotient (times 2 pi) 5)) . 1)
- (((cos (quotient (times 2 pi) 5)) . 3) . 4)))
- . 1)
- (((((sin (quotient (times 2 pi) 5)) . 4) . 1)
- (((sin (quotient (times 2 pi) 5)) . 2)
- (((cos (quotient (times 2 pi) 5)) . 2) . -6))
- (((cos (quotient (times 2 pi) 5)) . 4) . 1))
- . 1))))),'real)$
- set!*representation('c5,
- '(complextype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rc5
- (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
- (((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1))))
- (r2c5
- (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 1) . 2)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2) . -1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 1))
- . 1))))
- (r3c5
- (((((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3) . -1)
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 2) . 3)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 1) . -3))
- (((cos (quotient (times 4 pi) 5)) . 3) . 1))
- . 1))))
- (r4c5
- (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . 4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
- . 1))
- ((((((sin (quotient (times 4 pi) 5)) . 3)
- (((cos (quotient (times 4 pi) 5)) . 1) . -4))
- (((sin (quotient (times 4 pi) 5)) . 1)
- (((cos (quotient (times 4 pi) 5)) . 3) . 4)))
- . 1)
- (((((sin (quotient (times 4 pi) 5)) . 4) . 1)
- (((sin (quotient (times 4 pi) 5)) . 2)
- (((cos (quotient (times 4 pi) 5)) . 2) . -6))
- (((cos (quotient (times 4 pi) 5)) . 4) . 1))
- . 1))))),'real)$
- set!*available 'c5$
- % Symmetry data, part 2.
- set!*elems!*group('c6,'(id rc6 r2c6 r3c6 r4c6 r5c6))$
- set!*generators('c6,'(rc6))$
- set!*relations('c6,'(((rc6 rc6 rc6 rc6 rc6 rc6) (id))))$
- set!*grouptable('c6,
- '((grouptable id rc6 r2c6 r3c6 r4c6 r5c6)
- (id id rc6 r2c6 r3c6 r4c6 r5c6)
- (rc6 rc6 r2c6 r3c6 r4c6 r5c6 id)
- (r2c6 r2c6 r3c6 r4c6 r5c6 id rc6)
- (r3c6 r3c6 r4c6 r5c6 id rc6 r2c6)
- (r4c6 r4c6 r5c6 id rc6 r2c6 r3c6)
- (r5c6 r5c6 id rc6 r2c6 r3c6 r4c6)))$
- set!*inverse('c6,
- '((id rc6 r2c6 r3c6 r4c6 r5c6) (id r5c6 r4c6 r3c6 r2c6 rc6)))$
- set!*elemasgen('c6,
- '(((rc6) (rc6))
- ((r2c6) (rc6 rc6))
- ((r3c6) (rc6 rc6 rc6))
- ((r4c6) (rc6 rc6 rc6 rc6))
- ((r5c6) (rc6 rc6 rc6 rc6 rc6))))$
- set!*group('c6,'((id) (rc6) (r2c6) (r3c6) (r4c6) (r5c6)))$
- set!*representation('c6,
- '((id (((1 . 1))))
- (rc6 (((1 . 1))))
- (r2c6 (((1 . 1))))
- (r3c6 (((1 . 1))))
- (r4c6 (((1 . 1))))
- (r5c6 (((1 . 1))))),'complex)$
- set!*representation('c6,
- '((id (((1 . 1))))
- (rc6 (((-1 . 1))))
- (r2c6 (((1 . 1))))
- (r3c6 (((-1 . 1))))
- (r4c6 (((1 . 1))))
- (r5c6 (((-1 . 1))))),'complex)$
- set!*representation('c6,
- '((id (((1 . 1))))
- (rc6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . 1)
- . 2))))
- (r2c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))
- (r3c6 (((-1 . 1))))
- (r4c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))
- (r5c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . 1)
- . 2))))),'complex)$
- set!*representation('c6,
- '((id (((1 . 1))))
- (rc6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))
- (r2c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))
- (r3c6 (((1 . 1))))
- (r4c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))
- (r5c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))),'complex)$
- set!*representation('c6,
- '((id (((1 . 1))))
- (rc6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))
- (r2c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))
- (r3c6 (((1 . 1))))
- (r4c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))
- (r5c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))),'complex)$
- set!*representation('c6,
- '((id (((1 . 1))))
- (rc6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . 1)
- . 2))))
- (r2c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
- . 2))))
- (r3c6 (((-1 . 1))))
- (r4c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
- . 2))))
- (r5c6
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . 1)
- . 2))))),'complex)$
- set!*representation('c6,
- '(realtype
- (id (((1 . 1))))
- (rc6 (((1 . 1))))
- (r2c6 (((1 . 1))))
- (r3c6 (((1 . 1))))
- (r4c6 (((1 . 1))))
- (r5c6 (((1 . 1))))),'real)$
- set!*representation('c6,
- '(realtype
- (id (((1 . 1))))
- (rc6 (((-1 . 1))))
- (r2c6 (((1 . 1))))
- (r3c6 (((-1 . 1))))
- (r4c6 (((1 . 1))))
- (r5c6 (((-1 . 1))))),'real)$
- set!*representation('c6,
- '(complextype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rc6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
- (r2c6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r3c6 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
- (r4c6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r5c6
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (1 . 2))))),'real)$
- set!*representation('c6,
- '(complextype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (rc6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r2c6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (r3c6 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (r4c6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (r5c6
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))),'real)$
- set!*available 'c6$
- set!*elems!*group('s4,
- '(id
- bacd
- acbd
- abdc
- dbca
- cabd
- bcad
- dacb
- bdca
- dbac
- cbda
- adbc
- acdb
- badc
- cdab
- dcba
- cbad
- adcb
- bcda
- bdac
- cadb
- dabc
- cdba
- dcab))$
- set!*generators('s4,'(bacd acbd abdc dbca))$
- set!*relations('s4,
- '(((bacd bacd) (id))
- ((acbd acbd) (id))
- ((abdc abdc) (id))
- ((dbca) (bacd acbd abdc acbd bacd))))$
- set!*grouptable('s4,
- '((grouptable
- dcab
- dcba
- dbac
- dbca
- dabc
- dacb
- cdab
- cdba
- cbad
- cbda
- cabd
- cadb
- bdac
- bdca
- bcad
- bcda
- bacd
- badc
- adbc
- adcb
- acbd
- acdb
- id
- abdc)
- (dcab
- badc
- abdc
- cadb
- acdb
- cbda
- bcda
- bacd
- id
- dacb
- adcb
- dbca
- bdca
- cabd
- acbd
- dabc
- adbc
- dcba
- cdba
- cbad
- bcad
- dbac
- bdac
- dcab
- cdab)
- (dcba
- bacd
- id
- cabd
- acbd
- cbad
- bcad
- badc
- abdc
- dabc
- adbc
- dbac
- bdac
- cadb
- acdb
- dacb
- adcb
- dcab
- cdab
- cbda
- bcda
- dbca
- bdca
- dcba
- cdba)
- (dbac
- bcda
- acdb
- cbda
- abdc
- cadb
- badc
- bdca
- adcb
- dbca
- id
- dacb
- bacd
- cdba
- adbc
- dcba
- acbd
- dabc
- cabd
- cdab
- bdac
- dcab
- bcad
- dbac
- cbad)
- (dbca
- bcad
- acbd
- cbad
- id
- cabd
- bacd
- bdac
- adbc
- dbac
- abdc
- dabc
- badc
- cdab
- adcb
- dcab
- acdb
- dacb
- cadb
- cdba
- bdca
- dcba
- bcda
- dbca
- cbda)
- (dabc
- bdca
- adcb
- cdba
- adbc
- cdab
- bdac
- bcda
- acdb
- dcba
- acbd
- dcab
- bcad
- cbda
- abdc
- dbca
- id
- dbac
- cbad
- cadb
- badc
- dacb
- bacd
- dabc
- cabd)
- (dacb
- bdac
- adbc
- cdab
- adcb
- cdba
- bdca
- bcad
- acbd
- dcab
- acdb
- dcba
- bcda
- cbad
- id
- dbac
- abdc
- dbca
- cbda
- cabd
- bacd
- dabc
- badc
- dacb
- cadb)
- (cdab
- abdc
- badc
- acdb
- cadb
- bcda
- cbda
- id
- bacd
- adcb
- dacb
- bdca
- dbca
- acbd
- cabd
- adbc
- dabc
- cdba
- dcba
- bcad
- cbad
- bdac
- dbac
- cdab
- dcab)
- (cdba
- id
- bacd
- acbd
- cabd
- bcad
- cbad
- abdc
- badc
- adbc
- dabc
- bdac
- dbac
- acdb
- cadb
- adcb
- dacb
- cdab
- dcab
- bcda
- cbda
- bdca
- dbca
- cdba
- dcba)
- (cbad
- acdb
- bcda
- abdc
- cbda
- badc
- cadb
- adcb
- bdca
- id
- dbca
- bacd
- dacb
- adbc
- cdba
- acbd
- dcba
- cabd
- dabc
- bdac
- cdab
- bcad
- dcab
- cbad
- dbac)
- (cbda
- acbd
- bcad
- id
- cbad
- bacd
- cabd
- adbc
- bdac
- abdc
- dbac
- badc
- dabc
- adcb
- cdab
- acdb
- dcab
- cadb
- dacb
- bdca
- cdba
- bcda
- dcba
- cbda
- dbca)
- (cabd
- adcb
- bdca
- adbc
- cdba
- bdac
- cdab
- acdb
- bcda
- acbd
- dcba
- bcad
- dcab
- abdc
- cbda
- id
- dbca
- cbad
- dbac
- badc
- cadb
- bacd
- dacb
- cabd
- dabc)
- (cadb
- adbc
- bdac
- adcb
- cdab
- bdca
- cdba
- acbd
- bcad
- acdb
- dcab
- bcda
- dcba
- id
- cbad
- abdc
- dbac
- cbda
- dbca
- bacd
- cabd
- badc
- dabc
- cadb
- dacb)
- (bdac
- cbda
- cadb
- bcda
- badc
- acdb
- abdc
- dbca
- dacb
- bdca
- bacd
- adcb
- id
- dcba
- dabc
- cdba
- cabd
- adbc
- acbd
- dcab
- dbac
- cdab
- cbad
- bdac
- bcad)
- (bdca
- cbad
- cabd
- bcad
- bacd
- acbd
- id
- dbac
- dabc
- bdac
- badc
- adbc
- abdc
- dcab
- dacb
- cdab
- cadb
- adcb
- acdb
- dcba
- dbca
- cdba
- cbda
- bdca
- bcda)
- (bcad
- cadb
- cbda
- badc
- bcda
- abdc
- acdb
- dacb
- dbca
- bacd
- bdca
- id
- adcb
- dabc
- dcba
- cabd
- cdba
- acbd
- adbc
- dbac
- dcab
- cbad
- cdab
- bcad
- bdac)
- (bcda
- cabd
- cbad
- bacd
- bcad
- id
- acbd
- dabc
- dbac
- badc
- bdac
- abdc
- adbc
- dacb
- dcab
- cadb
- cdab
- acdb
- adcb
- dbca
- dcba
- cbda
- cdba
- bcda
- bdca)
- (bacd
- cdab
- cdba
- bdac
- bdca
- adbc
- adcb
- dcab
- dcba
- bcad
- bcda
- acbd
- acdb
- dbac
- dbca
- cbad
- cbda
- id
- abdc
- dabc
- dacb
- cabd
- cadb
- bacd
- badc)
- (badc
- cdba
- cdab
- bdca
- bdac
- adcb
- adbc
- dcba
- dcab
- bcda
- bcad
- acdb
- acbd
- dbca
- dbac
- cbda
- cbad
- abdc
- id
- dacb
- dabc
- cadb
- cabd
- badc
- bacd)
- (adbc
- dbca
- dacb
- dcba
- dabc
- dcab
- dbac
- cbda
- cadb
- cdba
- cabd
- cdab
- cbad
- bcda
- badc
- bdca
- bacd
- bdac
- bcad
- acdb
- abdc
- adcb
- id
- adbc
- acbd)
- (adcb
- dbac
- dabc
- dcab
- dacb
- dcba
- dbca
- cbad
- cabd
- cdab
- cadb
- cdba
- cbda
- bcad
- bacd
- bdac
- badc
- bdca
- bcda
- acbd
- id
- adbc
- abdc
- adcb
- acdb)
- (acbd
- dacb
- dbca
- dabc
- dcba
- dbac
- dcab
- cadb
- cbda
- cabd
- cdba
- cbad
- cdab
- badc
- bcda
- bacd
- bdca
- bcad
- bdac
- abdc
- acdb
- id
- adcb
- acbd
- adbc)
- (acdb
- dabc
- dbac
- dacb
- dcab
- dbca
- dcba
- cabd
- cbad
- cadb
- cdab
- cbda
- cdba
- bacd
- bcad
- badc
- bdac
- bcda
- bdca
- id
- acbd
- abdc
- adbc
- acdb
- adcb)
- (id
- dcab
- dcba
- dbac
- dbca
- dabc
- dacb
- cdab
- cdba
- cbad
- cbda
- cabd
- cadb
- bdac
- bdca
- bcad
- bcda
- bacd
- badc
- adbc
- adcb
- acbd
- acdb
- id
- abdc)
- (abdc
- dcba
- dcab
- dbca
- dbac
- dacb
- dabc
- cdba
- cdab
- cbda
- cbad
- cadb
- cabd
- bdca
- bdac
- bcda
- bcad
- badc
- bacd
- adcb
- adbc
- acdb
- acbd
- abdc
- id)))$
- set!*inverse('s4,
- '((dcab
- dcba
- dbac
- dbca
- dabc
- dacb
- cdab
- cdba
- cbad
- cbda
- cabd
- cadb
- bdac
- bdca
- bcad
- bcda
- bacd
- badc
- adbc
- adcb
- acbd
- acdb
- id
- abdc)
- (cdba
- dcba
- cbda
- dbca
- bcda
- bdca
- cdab
- dcab
- cbad
- dbac
- bcad
- bdac
- cadb
- dacb
- cabd
- dabc
- bacd
- badc
- acdb
- adcb
- acbd
- adbc
- id
- abdc)))$
- set!*elemasgen('s4,
- '(((bacd) (bacd))
- ((acbd) (acbd))
- ((abdc) (abdc))
- ((dbca) (dbca))
- ((cabd) (bacd acbd))
- ((bcad) (acbd bacd))
- ((dacb) (dbca bacd))
- ((bdca) (bacd dbca))
- ((dbac) (abdc dbca))
- ((cbda) (dbca abdc))
- ((adbc) (acbd abdc))
- ((acdb) (abdc acbd))
- ((badc) (bacd abdc))
- ((cdab) (abdc bacd acbd dbca))
- ((dcba) (acbd dbca))
- ((cbad) (bacd acbd bacd))
- ((adcb) (dbca bacd dbca))
- ((bcda) (abdc acbd bacd))
- ((bdac) (acbd bacd abdc))
- ((cadb) (abdc bacd acbd))
- ((dabc) (bacd acbd abdc))
- ((cdba) (bacd acbd dbca))
- ((dcab) (abdc acbd dbca))))$
- set!*group('s4,
- '((dcab dabc cadb bdac bcda cdba)
- (dcba badc cdab)
- (dbac dacb cabd adbc acdb bcad bdca cbda)
- (dbca adcb abdc acbd bacd cbad)
- (id)))$
- set!*representation('s4,
- '((id (((1 . 1))))
- (bacd (((1 . 1))))
- (acbd (((1 . 1))))
- (abdc (((1 . 1))))
- (dbca (((1 . 1))))
- (cabd (((1 . 1))))
- (bcad (((1 . 1))))
- (dacb (((1 . 1))))
- (bdca (((1 . 1))))
- (dbac (((1 . 1))))
- (cbda (((1 . 1))))
- (adbc (((1 . 1))))
- (acdb (((1 . 1))))
- (badc (((1 . 1))))
- (cdab (((1 . 1))))
- (dcba (((1 . 1))))
- (cbad (((1 . 1))))
- (adcb (((1 . 1))))
- (bcda (((1 . 1))))
- (bdac (((1 . 1))))
- (cadb (((1 . 1))))
- (dabc (((1 . 1))))
- (cdba (((1 . 1))))
- (dcab (((1 . 1))))),'complex)$
- set!*representation('s4,
- '((id (((1 . 1))))
- (bacd (((-1 . 1))))
- (acbd (((-1 . 1))))
- (abdc (((-1 . 1))))
- (dbca (((-1 . 1))))
- (cabd (((1 . 1))))
- (bcad (((1 . 1))))
- (dacb (((1 . 1))))
- (bdca (((1 . 1))))
- (dbac (((1 . 1))))
- (cbda (((1 . 1))))
- (adbc (((1 . 1))))
- (acdb (((1 . 1))))
- (badc (((1 . 1))))
- (cdab (((1 . 1))))
- (dcba (((1 . 1))))
- (cbad (((-1 . 1))))
- (adcb (((-1 . 1))))
- (bcda (((-1 . 1))))
- (bdac (((-1 . 1))))
- (cadb (((-1 . 1))))
- (dabc (((-1 . 1))))
- (cdba (((-1 . 1))))
- (dcab (((-1 . 1))))),'complex)$
- set!*representation('s4,
- '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (bacd
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (acbd
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (abdc
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (dbca
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (cabd
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (bcad
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (dacb
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (bdca
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (dbac
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (cbda
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (adbc
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (acdb
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (badc (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (cdab (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (dcba (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (cbad (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (adcb (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (bcda (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (bdac
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (cadb
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (dabc (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (cdba
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (dcab
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
- (-1 . 2))))),'complex)$
- set!*representation('s4,
- '((id
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (bacd
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (acbd
- (((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (abdc
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (dbca
- (((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cabd
- (((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bcad
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dacb
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (bdca
- (((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (dbac
- (((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (cbda
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (adbc
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (acdb
- (((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (badc
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cdab
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (dcba
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cbad
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (adcb
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (bcda
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (bdac
- (((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cadb
- (((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (dabc
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (cdba
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (dcab
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))),'complex)$
- set!*representation('s4,
- '((id
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (bacd
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (acbd
- (((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (abdc
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dbca
- (((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cabd
- (((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bcad
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dacb
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (bdca
- (((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (dbac
- (((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (cbda
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (adbc
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (acdb
- (((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (badc
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cdab
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (dcba
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cbad
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (adcb
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bcda
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bdac
- (((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cadb
- (((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (dabc
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (cdba
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dcab
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))),'complex)$
- set!*representation('s4,
- '(realtype
- (id (((1 . 1))))
- (bacd (((1 . 1))))
- (acbd (((1 . 1))))
- (abdc (((1 . 1))))
- (dbca (((1 . 1))))
- (cabd (((1 . 1))))
- (bcad (((1 . 1))))
- (dacb (((1 . 1))))
- (bdca (((1 . 1))))
- (dbac (((1 . 1))))
- (cbda (((1 . 1))))
- (adbc (((1 . 1))))
- (acdb (((1 . 1))))
- (badc (((1 . 1))))
- (cdab (((1 . 1))))
- (dcba (((1 . 1))))
- (cbad (((1 . 1))))
- (adcb (((1 . 1))))
- (bcda (((1 . 1))))
- (bdac (((1 . 1))))
- (cadb (((1 . 1))))
- (dabc (((1 . 1))))
- (cdba (((1 . 1))))
- (dcab (((1 . 1))))),'real)$
- set!*representation('s4,
- '(realtype
- (id (((1 . 1))))
- (bacd (((-1 . 1))))
- (acbd (((-1 . 1))))
- (abdc (((-1 . 1))))
- (dbca (((-1 . 1))))
- (cabd (((1 . 1))))
- (bcad (((1 . 1))))
- (dacb (((1 . 1))))
- (bdca (((1 . 1))))
- (dbac (((1 . 1))))
- (cbda (((1 . 1))))
- (adbc (((1 . 1))))
- (acdb (((1 . 1))))
- (badc (((1 . 1))))
- (cdab (((1 . 1))))
- (dcba (((1 . 1))))
- (cbad (((-1 . 1))))
- (adcb (((-1 . 1))))
- (bcda (((-1 . 1))))
- (bdac (((-1 . 1))))
- (cadb (((-1 . 1))))
- (dabc (((-1 . 1))))
- (cdba (((-1 . 1))))
- (dcab (((-1 . 1))))),'real)$
- set!*representation('s4,
- '(realtype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (bacd
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (acbd
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (abdc
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (dbca
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (cabd
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (bcad
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (dacb
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (bdca
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (dbac
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (cbda
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (adbc
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (acdb
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (badc (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (cdab (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (dcba (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (cbad (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (adcb (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (bcda (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (bdac
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (cadb
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (dabc (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (cdba
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
- (dcab
- (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
- (-1 . 2))))),'real)$
- set!*representation('s4,
- '(realtype
- (id
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (bacd
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (acbd
- (((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (abdc
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (dbca
- (((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cabd
- (((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bcad
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dacb
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (bdca
- (((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (dbac
- (((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (cbda
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (adbc
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (acdb
- (((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (badc
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cdab
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (dcba
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cbad
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (adcb
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (bcda
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (bdac
- (((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cadb
- (((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (dabc
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (cdba
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (dcab
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))),'real)$
- set!*representation('s4,
- '(realtype
- (id
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (bacd
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (acbd
- (((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (abdc
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dbca
- (((nil . 1) (-1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cabd
- (((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bcad
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dacb
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (bdca
- (((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (dbac
- (((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (cbda
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (adbc
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (acdb
- (((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (badc
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (cdab
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (dcba
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cbad
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (adcb
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bcda
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (bdac
- (((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (cadb
- (((nil . 1) (-1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (dabc
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (cdba
- (((nil . 1) (nil . 1) (1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (dcab
- (((nil . 1) (nil . 1) (-1 . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((1 . 1) (nil . 1) (nil . 1))))),'real)$
- set!*available 's4$
- set!*elems!*group('a4,
- '(id ta4 t2a4 xa4 ya4 za4 txa4 tya4 tza4 t2xa4 t2ya4
- t2za4))$
- set!*generators('a4,'(ta4 xa4 ya4 za4))$
- set!*relations('a4,
- '(((za4) (ta4 xa4 ta4 ta4))
- ((ya4) (ta4 za4 ta4 ta4))
- ((xa4) (ta4 ya4 ta4 ta4))
- ((ta4 ta4 ta4) (id))
- ((xa4 xa4) (id))
- ((ya4 ya4) (id))
- ((za4 za4) (id))
- ((xa4 ya4) (za4))))$
- set!*grouptable('a4,
- '((grouptable
- id
- ta4
- t2a4
- xa4
- ya4
- za4
- txa4
- tya4
- tza4
- t2xa4
- t2ya4
- t2za4)
- (id id ta4 t2a4 xa4 ya4 za4 txa4 tya4 tza4 t2xa4
- t2ya4 t2za4)
- (ta4 ta4 t2a4 id txa4 tya4 tza4 t2xa4 t2ya4 t2za4 xa4
- ya4 za4)
- (t2a4
- t2a4
- id
- ta4
- t2xa4
- t2ya4
- t2za4
- xa4
- ya4
- za4
- txa4
- tya4
- tza4)
- (xa4 xa4 tya4 t2za4 id za4 ya4 tza4 ta4 txa4 t2ya4
- t2xa4 t2a4)
- (ya4 ya4 tza4 t2xa4 za4 id xa4 tya4 txa4 ta4 t2a4
- t2za4 t2ya4)
- (za4 za4 txa4 t2ya4 ya4 xa4 id ta4 tza4 tya4 t2za4
- t2a4 t2xa4)
- (txa4
- txa4
- t2ya4
- za4
- ta4
- tza4
- tya4
- t2za4
- t2a4
- t2xa4
- ya4
- xa4
- id)
- (tya4
- tya4
- t2za4
- xa4
- tza4
- ta4
- txa4
- t2ya4
- t2xa4
- t2a4
- id
- za4
- ya4)
- (tza4
- tza4
- t2xa4
- ya4
- tya4
- txa4
- ta4
- t2a4
- t2za4
- t2ya4
- za4
- id
- xa4)
- (t2xa4
- t2xa4
- ya4
- tza4
- t2a4
- t2za4
- t2ya4
- za4
- id
- xa4
- tya4
- txa4
- ta4)
- (t2ya4
- t2ya4
- za4
- txa4
- t2za4
- t2a4
- t2xa4
- ya4
- xa4
- id
- ta4
- tza4
- tya4)
- (t2za4
- t2za4
- xa4
- tya4
- t2ya4
- t2xa4
- t2a4
- id
- za4
- ya4
- tza4
- ta4
- txa4)))$
- set!*inverse('a4,
- '((id ta4 t2a4 xa4 ya4 za4 txa4 tya4 tza4 t2xa4 t2ya4 t2za4)
- (id t2a4 ta4 xa4 ya4 za4 t2za4 t2xa4 t2ya4 tya4 tza4 txa4)
- ))$
- set!*elemasgen('a4,
- '(((ta4) (ta4))
- ((t2a4) (ta4 ta4))
- ((xa4) (xa4))
- ((ya4) (ya4))
- ((za4) (za4))
- ((txa4) (ta4 xa4))
- ((tya4) (ta4 ya4))
- ((tza4) (ta4 za4))
- ((t2xa4) (ta4 ta4 xa4))
- ((t2ya4) (ta4 ta4 ya4))
- ((t2za4) (ta4 ta4 za4))))$
- set!*group('a4,
- '((id) (txa4 ta4 tza4 tya4) (t2za4 t2a4 t2ya4 t2xa4)
- (ya4 xa4 za4)))$
- set!*representation('a4,
- '((id (((1 . 1))))
- (ta4 (((1 . 1))))
- (t2a4 (((1 . 1))))
- (xa4 (((1 . 1))))
- (ya4 (((1 . 1))))
- (za4 (((1 . 1))))
- (txa4 (((1 . 1))))
- (tya4 (((1 . 1))))
- (tza4 (((1 . 1))))
- (t2xa4 (((1 . 1))))
- (t2ya4 (((1 . 1))))
- (t2za4 (((1 . 1))))),'complex)$
- set!*representation('a4,
- '((id (((1 . 1))))
- (ta4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))
- (t2a4
- (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
- . -1)
- . 2))))
- (xa4 (((1 . 1))))
- (ya4 (((1 . 1))))
- (za4 (((1 . 1))))
- (txa4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))
- (tya4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))
- (tza4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))
- (t2xa4
- (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
- . -1)
- . 2))))
- (t2ya4
- (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
- . -1)
- . 2))))
- (t2za4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1))
- . -1)
- . 2))))),'complex)$
- set!*representation('a4,
- '((id (((1 . 1))))
- (ta4
- (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
- . -1)
- . 2))))
- (t2a4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))
- (xa4 (((1 . 1))))
- (ya4 (((1 . 1))))
- (za4 (((1 . 1))))
- (txa4
- (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
- . -1)
- . 2))))
- (tya4
- (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
- . -1)
- . 2))))
- (tza4
- (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
- . -1)
- . 2))))
- (t2xa4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))
- (t2ya4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))
- (t2za4
- (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
- . -1)
- . 2))))),'complex)$
- set!*representation('a4,
- '((id
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (ta4
- (((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (t2a4
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (xa4
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (ya4
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (za4
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (txa4
- (((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (tya4
- (((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (tza4
- (((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (t2xa4
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (t2ya4
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (t2za4
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))),'complex)$
- set!*representation('a4,
- '(realtype
- (id (((1 . 1))))
- (ta4 (((1 . 1))))
- (t2a4 (((1 . 1))))
- (xa4 (((1 . 1))))
- (ya4 (((1 . 1))))
- (za4 (((1 . 1))))
- (txa4 (((1 . 1))))
- (tya4 (((1 . 1))))
- (tza4 (((1 . 1))))
- (t2xa4 (((1 . 1))))
- (t2ya4 (((1 . 1))))
- (t2za4 (((1 . 1))))),'real)$
- set!*representation('a4,
- '(complextype
- (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (ta4
- (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . 1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (t2a4
- (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
- (-1 . 2))))
- (xa4 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (ya4 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (za4 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
- (txa4
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (tya4
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (tza4
- (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
- (-1 . 2))))
- (t2xa4
- (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
- (-1 . 2))))
- (t2ya4
- (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
- (-1 . 2))))
- (t2za4
- (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
- . 2))
- ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
- (-1 . 2))))),'real)$
- set!*representation('a4,
- '(realtype
- (id
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (ta4
- (((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (t2a4
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (xa4
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (ya4
- (((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))))
- (za4
- (((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))))
- (txa4
- (((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (1 . 1) (nil . 1))))
- (tya4
- (((nil . 1) (nil . 1) (1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (tza4
- (((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))
- ((nil . 1) (-1 . 1) (nil . 1))))
- (t2xa4
- (((nil . 1) (-1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))
- (t2ya4
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (-1 . 1))
- ((-1 . 1) (nil . 1) (nil . 1))))
- (t2za4
- (((nil . 1) (1 . 1) (nil . 1))
- ((nil . 1) (nil . 1) (1 . 1))
- ((1 . 1) (nil . 1) (nil . 1))))),'real)$
- set!*available 'a4$
- end;
|