symmetry.red 224 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222
  1. module symmetry;
  2. %
  3. % ----------------------------------------------------------
  4. % Symmetry Package
  5. % ----------------------------------------------------------
  6. %
  7. % Author : Karin Gatermann
  8. % Konrad-Zuse-Zentrum fuer
  9. % Informationstechnik Berlin
  10. % Heilbronner Str. 10
  11. % W-1000 Berlin 31
  12. % Germany
  13. % Email: Gatermann@sc.ZIB-Berlin.de
  14. %
  15. % Version 1.0 9. December 1991
  16. %
  17. % Abstract:
  18. % ---------
  19. % This program is an implementation of the algorithm
  20. % for computation of symmetry adapted bases from the
  21. % theory of linear representations of finite grous.
  22. % Projections for the computation of block diagonal form
  23. % of matrices are computed having the symmetry of a group.
  24. %
  25. %
  26. % REDUCE 3.4 is required.
  27. %
  28. % References:
  29. % -----------
  30. % J.-P. Serre, Linear Representations of Finite Groups.
  31. % Springer, New York (1977).
  32. % E. Stiefel, A. F{\"a}ssler, Gruppentheoretische
  33. % Methoden und ihre Anwendung. Teubner, Stuttgart (1979).
  34. % (English translation to appear by Birkh\"auser (1992)).
  35. %
  36. % Keywords:
  37. % --------
  38. % linear representations, symmetry adapted bases,
  39. % matrix with the symmetry of a group,
  40. % block diagonalization
  41. %
  42. % symmetry.red
  43. % definition of available algebraic operators
  44. % To build a fast loading version of this package, the following
  45. % sequence of commands should be used:
  46. % faslout "symmetry";
  47. % in "symmetry.red"$
  48. % faslend;
  49. load_package matrix;
  50. % CREATE!-PACKAGE('(symmetry
  51. % symatvec
  52. % symcheck
  53. % symchrep
  54. % symhandl
  55. % sympatch
  56. % symwork
  57. % symdata1
  58. % symdata2),
  59. % '(contrib symmetry));
  60. algebraic(operator @);
  61. algebraic( infix @);
  62. algebraic( precedence @,*);
  63. symbolic procedure give!_groups (u);
  64. % prints the elements of the abstract group
  65. begin
  66. return mk!+outer!+list(get!*available!*groups());
  67. end;
  68. put('availablegroups,'psopfn,'give!_groups);
  69. symbolic procedure print!_group (groupname);
  70. % prints the elements of the abstract group
  71. begin
  72. scalar g;
  73. if length(groupname)>1 then rederr("too many arguments");
  74. if length(groupname)<1 then rederr("group as argument missing");
  75. g:=reval car groupname;
  76. if available!*p(g) then
  77. return alg!:print!:group(g);
  78. end;
  79. put('printgroup,'psopfn,'print!_group);
  80. symbolic procedure print!_generators (groupname);
  81. % prints the generating elements of the abstract group
  82. begin
  83. scalar g;
  84. if length(groupname)>1 then rederr("too many arguments");
  85. if length(groupname)<1 then rederr("group as argument missing");
  86. g:=reval car groupname;
  87. if available!*p(g) then
  88. return alg!:generators(g);
  89. end;
  90. put('generators,'psopfn,'print!_generators);
  91. symbolic procedure character!_table (groupname);
  92. % prints the characters of the group
  93. begin
  94. scalar g;
  95. if length(groupname)>1 then rederr("too many arguments");
  96. g:=reval car groupname;
  97. if available!*p(g) then
  98. return alg!:characters(g);
  99. end;
  100. put('charactertable,'psopfn,'character!_table);
  101. symbolic procedure character!_nr (groupname);
  102. % prints the characters of the group
  103. begin
  104. scalar group,nr,char1;
  105. if length(groupname)>2 then rederr("too many arguments");
  106. if length(groupname)<2 then rederr("group or number missing");
  107. group:=reval car groupname;
  108. nr:=reval cadr groupname;
  109. if not(available!*p(group)) then
  110. rederr("no information upon group available");
  111. if not(irr!:nr!:p(nr,group)) then
  112. rederr("no character with this number");
  113. if !*complex then
  114. char1:=get!*complex!*character(group,nr) else
  115. char1:=get!*real!*character(group,nr);
  116. return alg!:print!:character(char1);
  117. end;
  118. put('characternr,'psopfn,'character!_nr);
  119. symbolic procedure irreducible!_rep!_table (groupname);
  120. % prints the irreducible representations of the group
  121. begin
  122. scalar g;
  123. if length(groupname)>1 then rederr("too many arguments");
  124. if length(groupname)<1 then rederr("group missing");
  125. g:=reval car groupname;
  126. if available!*p(g) then
  127. return alg!:irr!:reps(g);
  128. end;
  129. put('irreduciblereptable,'psopfn,'irreducible!_rep!_table);
  130. symbolic procedure irreducible!_rep!_nr (groupname);
  131. % prints the irreducible representations of the group
  132. begin
  133. scalar g,nr;
  134. if length(groupname)>2 then rederr("too many arguments");
  135. if length(groupname)<2 then rederr("group or number missing");
  136. g:=reval car groupname;
  137. if not(available!*p(g)) then
  138. rederr("no information upon group available");
  139. nr:=reval cadr groupname;
  140. if not(irr!:nr!:p(nr,g)) then
  141. rederr("no irreducible representation with this number");
  142. if !*complex then
  143. return
  144. alg!:print!:rep(get!*complex!*irreducible!*rep(g,nr))
  145. else return
  146. alg!:print!:rep(get!*real!*irreducible!*rep(g,nr));
  147. end;
  148. put('irreduciblerepnr,'psopfn,'irreducible!_rep!_nr);
  149. symbolic procedure canonical!_decomposition(representation);
  150. % computes the canonical decomposition of the given representation
  151. begin
  152. scalar repr;
  153. if length(representation)>1 then rederr("too many arguments");
  154. repr:=reval car representation;
  155. if representation!:p(repr) then
  156. return alg!:can!:decomp(mk!_internal(repr));
  157. end;
  158. put('canonicaldecomposition,'psopfn,'canonical!_decomposition);
  159. symbolic procedure sym!_character(representation);
  160. % computes the character of the given representation
  161. begin
  162. scalar repr;
  163. if length(representation)>1 then rederr("too many arguments");
  164. if length(representation)<1 then
  165. rederr("representation list missing");
  166. repr:=reval car representation;
  167. if representation!:p(repr) then
  168. return alg!:print!:character(mk!_character(mk!_internal(repr))) else
  169. rederr("that's no representation");
  170. end;
  171. put('character,'psopfn,'sym!_character);
  172. symbolic procedure symmetry!_adapted!_basis (arg);
  173. % computes the first part of the symmetry adapted bases of
  174. % the nr-th component
  175. % arg = (representation,nr)
  176. begin
  177. scalar repr,nr,res;
  178. if length(arg)>2 then rederr("too many arguments");
  179. if length(arg)<2 then rederr("group or number missing");
  180. repr:=reval car arg;
  181. nr:=reval cadr arg;
  182. if representation!:p(repr) then
  183. repr:=mk!_internal(repr) else
  184. rederr("that's no representation");
  185. if irr!:nr!:p(nr,get!_group!_in(repr)) then
  186. <<
  187. if not(null(mk!_multiplicity(repr,nr))) then
  188. res:= mk!+outer!+mat(mk!_part!_sym!_all(repr,nr))
  189. else
  190. res:=nil;
  191. >> else
  192. rederr("wrong number of an irreducible representation");
  193. return res;
  194. end;
  195. put('symmetrybasis,'psopfn,'symmetry!_adapted!_basis);
  196. symbolic procedure symmetry!_adapted!_basis!_part (arg);
  197. % computes the first part of the symmetry adapted bases
  198. % of the nr-th component
  199. % arg = (representation,nr)
  200. begin
  201. scalar repr,nr,res;
  202. if length(arg)>2 then rederr("too many arguments");
  203. if length(arg)<2 then rederr("group or number missing");
  204. repr:=reval car arg;
  205. nr:=reval cadr arg;
  206. if representation!:p(repr) then
  207. repr:=mk!_internal(repr) else
  208. rederr("that's no representation");
  209. if irr!:nr!:p(nr,get!_group!_in(repr)) then
  210. <<
  211. if not(null(mk!_multiplicity(repr,nr))) then
  212. res:= mk!+outer!+mat(mk!_part!_sym1(repr,nr))
  213. else
  214. res:=nil;
  215. >> else
  216. rederr("wrong number of an irreducible representation");
  217. return res;
  218. end;
  219. put('symmetrybasispart,'psopfn,'symmetry!_adapted!_basis!_part);
  220. symbolic procedure symmetry!_bases (representation);
  221. % computes the complete symmetry adapted basis
  222. begin
  223. scalar repr,res;
  224. if length(representation)>1 then rederr("too many arguments");
  225. if length(representation)<1 then rederr("representation missing");
  226. repr:=reval car representation;
  227. if representation!:p(repr) then
  228. <<
  229. res:= mk!+outer!+mat(mk!_sym!_basis(mk!_internal(repr)));
  230. >> else
  231. rederr("that's no representation");
  232. return res;
  233. end;
  234. put('allsymmetrybases,'psopfn,'symmetry!_bases);
  235. symbolic procedure sym!_diagonalize (arg);
  236. % diagonalizes a matrix with respect to a given representation
  237. begin
  238. scalar repr,matrix1;
  239. if (length(arg)>2) then rederr("too many arguments");
  240. if (length(arg)<2) then rederr("representation or matrix missing");
  241. repr:=reval cadr arg;
  242. matrix1:=reval (car arg);
  243. if alg!+matrix!+p(matrix1) then
  244. matrix1:=mk!+inner!+mat(matrix1)
  245. else
  246. rederr("first argument must be a matrix");
  247. if representation!:p(repr) then
  248. repr:=mk!_internal(repr) else
  249. rederr("that's no representation");
  250. if symmetry!:p(matrix1,repr) then
  251. return mk!+outer!+mat(mk!_diagonal(
  252. matrix1,repr)) else
  253. rederr("matrix has not the symmetry of this representation");
  254. end;
  255. put('diagonalize,'psopfn,'sym!_diagonalize);
  256. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  257. %
  258. % function to add new groups to the database by the user
  259. %
  260. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  261. symbolic procedure set!_generators!_group (arg);
  262. % a group is generated by some elements
  263. begin
  264. scalar group, generators,relations,rel;
  265. if length(arg)>3 then rederr("too many arguments");
  266. if length(arg)<2 then
  267. rederr("group identifier or generator list missing");
  268. group:=reval car arg;
  269. generators:=reval cadr arg;
  270. if length(arg)=3 then
  271. relations:=reval caddr arg else
  272. relations:=nil;
  273. if not(idp(group)) then
  274. rederr("first argument must be a group identifier");
  275. generators:=mk!+inner!+list(generators);
  276. if not(identifier!:list!:p(generators)) then
  277. rederr("second argument must be a list of generator identifiers")
  278. else set!*generators(group,generators);
  279. relations:=mk!_relation!_list(relations);
  280. for each rel in relations do
  281. if not(relation!:list!:p(group,rel)) then
  282. rederr("equations in generators are demanded");
  283. set!*relations(group,relations);
  284. writepri("setgenerators finished",'only);
  285. end;
  286. put('setgenerators,'psopfn,'set!_generators!_group);
  287. symbolic procedure set!_elements(arg);
  288. % each element<>id of a group has a representation
  289. % as product of generators
  290. % the identity is called id
  291. begin
  292. scalar elemreps,replist,elems,group;
  293. if length(arg)>2 then rederr("too many arguments");
  294. if length(arg)<2 then
  295. rederr("missing group or list with group elements with generators ");
  296. group:=reval car arg;
  297. if not(idp(group)) then
  298. rederr("first argument must be a group identifier");
  299. elemreps:=reval cadr arg;
  300. elemreps:=mk!_relation!_list(elemreps);
  301. for each replist in elemreps do
  302. if not(generator!:list!:p(group,cadr replist)) then
  303. rederr("group elements should be represented in generators");
  304. for each replist in elemreps do
  305. if not((length(car replist)=1) and idp(caar replist)) then
  306. rederr("first must be one group element");
  307. elems:= for each replist in elemreps collect caar replist;
  308. elems:=append(list('id),elems);
  309. set!*elems!*group(group,elems);
  310. set!*elemasgen(group,elemreps);
  311. writepri("setelements finished",'only);
  312. end;
  313. put('setelements,'psopfn,'set!_elements);
  314. symbolic procedure set!_group!_table (arg);
  315. % a group table gives the result of the product of two elements
  316. begin
  317. scalar table,group,z,s;
  318. if length(arg)>2 then rederr("too many arguments");
  319. if length(arg)<2 then
  320. rederr("missing group or group table as a matrix ");
  321. group:=reval car arg;
  322. if not(idp(group)) then
  323. rederr("first argument must be a group identifier");
  324. table:=reval cadr arg;
  325. if alg!+matrix!+p(table) then
  326. table:=mk!+inner!+mat(table);
  327. table:=for each z in table collect
  328. for each s in z collect prepsq(s);
  329. if group!:table!:p(group,table) then
  330. <<
  331. set!*grouptable(group,table);
  332. set!*inverse(group,mk!*inverse!*list(table));
  333. set!*group(group,mk!*equiclasses(table));
  334. set!*storing(group);
  335. >> else rederr("table is not a group table");
  336. writepri("setgrouptable finished",'only);
  337. end;
  338. put('setgrouptable,'psopfn,'set!_group!_table);
  339. symbolic procedure set!_real!_rep(arg);
  340. % store the real irreducible representations
  341. begin
  342. scalar replist,type;
  343. if length(arg)>2 then rederr("too many arguments");
  344. if length(arg)<2 then
  345. rederr("representation or type missing");
  346. replist:=reval car arg;
  347. type:=reval cadr arg;
  348. if (not(type= 'realtype) and not(type = 'complextype)) then
  349. rederr("only real or complex types possible");
  350. if get!*order(get!_group!_out(replist))=0 then
  351. rederr("elements of the groups must be set first");
  352. if representation!:p(replist) then
  353. replist:=(mk!_internal(replist));
  354. set!*representation(get!_group!_in(replist),
  355. append(list(type),cdr replist),'real);
  356. writepri("Rsetrepresentation finished",'only);
  357. end;
  358. put('Rsetrepresentation,'psopfn,'set!_real!_rep);
  359. symbolic procedure set!_complex!_rep(arg);
  360. % store the complex irreducible representations
  361. begin
  362. scalar replist;
  363. if length(arg)>1 then rederr("too many arguments");
  364. if length(arg)<1 then
  365. rederr("representation missing");
  366. replist:=reval car arg;
  367. if get!*order(get!_group!_out(replist))=0 then
  368. rederr("elements of the groups must be set first");
  369. if representation!:p(replist) then
  370. replist:=(mk!_internal(replist));
  371. set!*representation(get!_group!_in(replist),cdr replist,'complex);
  372. writepri("Csetrepresentation finished",'only);
  373. end;
  374. put('Csetrepresentation,'psopfn,'set!_complex!_rep);
  375. symbolic procedure mk!_available(arg);
  376. % group is only then made available, if all information was given
  377. begin
  378. scalar group;
  379. if length(arg)>1 then rederr("too many arguments");
  380. if length(arg)<1 then
  381. rederr("group identifier missing");
  382. group:=reval car arg;
  383. if check!:complete!:rep!:p(group) then
  384. set!*available(group);
  385. writepri("setavailable finished",'only);
  386. end;
  387. put('setavailable,'psopfn,'mk!_available);
  388. symbolic procedure update!_new!_group (arg);
  389. % stores the user defined new abstract group in a file
  390. begin
  391. scalar group;
  392. if length(arg)>2 then rederr("too many arguments");
  393. if length(arg)<2 then
  394. rederr("group or filename missing");
  395. group:=reval car arg;
  396. if available!*p(group) then write!:to!:file(group,reval cadr arg);
  397. writepri("storegroup finished",'only);
  398. end;
  399. put('storegroup,'psopfn,'update!_new!_group);
  400. procedure loadgroups(fname);
  401. % loads abstract groups from a file which was created from a user
  402. % by newgroup and updategroup
  403. begin
  404. in fname;
  405. write"group loaded";
  406. end;
  407. endmodule;
  408. module symatvec;
  409. % Symmetry
  410. % Author : Karin Gatermann
  411. % Konrad-Zuse-Zentrum fuer
  412. % Informationstechnik Berlin
  413. % Heilbronner Str. 10
  414. % W-1000 Berlin 31
  415. % Germany
  416. % Email: Gatermann@sc.ZIB-Berlin.de
  417. % symatvec.red
  418. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  419. %
  420. % functions for matrix vector operations
  421. %
  422. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  423. symbolic procedure gen!+can!+bas(dimension);
  424. % returns the canonical basis of R^dimension as a vector list
  425. begin
  426. scalar eins,nullsq,i,j,ll;
  427. eins:=(1 ./ 1);
  428. nullsq:=(nil ./ 1);
  429. ll:= for i:=1:dimension collect
  430. for j:=1:dimension collect
  431. if i=j then eins else nullsq;
  432. return ll;
  433. end;
  434. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  435. %
  436. % matrix functions
  437. %
  438. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  439. symbolic procedure alg!+matrix!+p(mat1);
  440. % returns true if the matrix is a matrix from algebraic level
  441. begin
  442. scalar len,elem;
  443. if length(mat1)<1 then rederr("should be a matrix");
  444. if not(car (mat1) = 'mat) then rederr("should be a matrix");
  445. mat1:=cdr mat1;
  446. if length(mat1)<1 then rederr("should be a matrix");
  447. len:=length(car mat1);
  448. for each elem in cdr mat1 do
  449. if not(length(elem)=len) then rederr("should be a matrix");
  450. return t;
  451. end;
  452. symbolic procedure matrix!+p(mat1);
  453. % returns true if the matrix is a matrix in internal structure
  454. begin
  455. scalar dimension,z,res;
  456. if length(mat1)<1 then return nil;
  457. dimension:=length(car mat1);
  458. res:=t;
  459. for each z in cdr mat1 do
  460. if not(dimension = length(z)) then res:=nil;
  461. return res;
  462. end;
  463. symbolic procedure squared!+matrix!+p(mat1);
  464. % returns true if the matrix is a matrix in internal structure
  465. begin
  466. if (matrix!+p(mat1) and (get!+row!+nr(mat1) = get!+col!+nr(mat1)))
  467. then return t;
  468. end;
  469. symbolic procedure equal!+matrices!+p(mat1,mat2);
  470. % returns true if the matrices are equal ( internal structure)
  471. begin
  472. scalar s,z,helpp,mathelp,sum,rulesum,rule1,rule2;
  473. if (same!+dim!+squared!+p(mat1,mat2)) then
  474. <<
  475. mathelp:=
  476. mk!+mat!+plus!+mat(mat1,
  477. mk!+scal!+mult!+mat((-1 ./ 1),mat2));
  478. sum:=(nil ./ 1);
  479. for each z in mathelp do
  480. for each s in z do
  481. if !*complex then
  482. sum:=addsq(sum,multsq(s,mk!+conjugate!+sq s)) else
  483. sum:=addsq(sum,multsq(s,s));
  484. % print!-sq(sum);
  485. rulesum:=change!+sq!+to!+algnull(sum);
  486. if rulesum = 0 then helpp:=t else helpp:=nil;
  487. % print!-sq(simp rulesum);
  488. % if null(numr(simp prepsq(sum))) then helpp:=t
  489. % else helpp:=nil;
  490. >> else helpp:=nil;
  491. return helpp;
  492. end;
  493. symbolic procedure get!+row!+nr(mat1);
  494. % returns the number of rows
  495. begin
  496. return length(mat1);
  497. end;
  498. symbolic procedure get!+col!+nr(mat1);
  499. % returns the number of columns
  500. begin
  501. return length(car mat1);
  502. end;
  503. symbolic procedure get!+mat!+entry(mat1,z,s);
  504. % returns the matrix element in row z and column s
  505. begin
  506. return nth(nth(mat1,z),s);
  507. end;
  508. symbolic procedure same!+dim!+squared!+p(mat1,mat2);
  509. % returns true if the matrices are both squared matrices
  510. % of the same dimension
  511. % (internal structur)
  512. begin
  513. if (squared!+matrix!+p(mat1) and squared!+matrix!+p(mat2) and
  514. (get!+row!+nr(mat1) = get!+row!+nr(mat1)))
  515. then return t;
  516. end;
  517. symbolic procedure mk!+transpose!+matrix(mat1);
  518. % returns the transposed matrix (internal structure)
  519. begin
  520. scalar z,s,tpmat;
  521. if not(matrix!+p(mat1)) then rederr("no matrix in transpose");
  522. tpmat:=for z:=1:get!+col!+nr(mat1) collect
  523. for s:=1:get!+row!+nr(mat1) collect
  524. get!+mat!+entry(mat1,s,z);
  525. return tpmat;
  526. end;
  527. symbolic procedure mk!+conjugate!+matrix(mat1);
  528. % returns the matrix with conjugate elements (internal structure)
  529. begin
  530. scalar z,s,tpmat;
  531. if not(matrix!+p(mat1)) then rederr("no matrix in conjugate matrix");
  532. tpmat:=for z:=1:get!+row!+nr(mat1) collect
  533. for s:=1:get!+col!+nr(mat1) collect
  534. mk!+conjugate!+sq(get!+mat!+entry(mat1,z,s));
  535. return tpmat;
  536. end;
  537. symbolic procedure mk!+hermitean!+matrix(mat1);
  538. % returns the transposed matrix (internal structure)
  539. begin
  540. if !*complex then
  541. return mk!+conjugate!+matrix(mk!+transpose!+matrix(mat1)) else
  542. return mk!+transpose!+matrix(mat1);
  543. end;
  544. symbolic procedure unitarian!+p(mat1);
  545. % returns true if matrix is orthogonal or unitarian resp.
  546. begin
  547. scalar mathermit,unitmat;
  548. mathermit:=mk!+mat!+mult!+mat(mk!+hermitean!+matrix(mat1),mat1);
  549. unitmat:=mk!+unit!+mat(get!+row!+nr(mat1));
  550. if equal!+matrices!+p(mathermit,unitmat) then return t;
  551. end;
  552. symbolic procedure mk!+mat!+mult!+mat(mat1,mat2);
  553. % returns a matrix= matrix1*matrix2 (internal structure)
  554. begin
  555. scalar dims1,dimz1,dims2,s,z,res,sum,k;
  556. if not(matrix!+p(mat1)) then rederr("no matrix in mult");
  557. if not(matrix!+p(mat2)) then rederr("no matrix in mult");
  558. dims1:=get!+col!+nr(mat1);
  559. dimz1:=get!+row!+nr(mat1);
  560. dims2:=get!+col!+nr( mat2);
  561. if not(dims1 = get!+row!+nr(mat2)) then
  562. rederr("matrices can not be multiplied");
  563. res:=for z:=1:dimz1 collect
  564. for s:=1:dims2 collect
  565. <<
  566. sum:=(nil ./ 1);
  567. for k:=1:dims1 do
  568. sum:=addsq(sum,
  569. multsq(
  570. get!+mat!+entry(mat1,z,k),
  571. get!+mat!+entry(mat2,k,s)
  572. )
  573. );
  574. sum:=subs2 sum where !*sub2=t;
  575. sum
  576. >>;
  577. return res;
  578. end;
  579. symbolic procedure mk!+mat!+plus!+mat(mat1,mat2);
  580. % returns a matrix= matrix1 + matrix2 (internal structure)
  581. begin
  582. scalar dims,dimz,s,z,res,sum;
  583. if not(matrix!+p(mat1)) then rederr("no matrix in add");
  584. if not(matrix!+p(mat2)) then rederr("no matrix in add");
  585. dims:=get!+col!+nr(mat1);
  586. dimz:=get!+row!+nr(mat1);
  587. if not(dims = get!+col!+nr(mat2)) then
  588. rederr("wrong dimensions in add");
  589. if not(dimz = get!+row!+nr(mat2)) then
  590. rederr("wrong dimensions in add");
  591. res:=for z:=1:dimz collect
  592. for s:=1:dims collect
  593. <<
  594. sum:=addsq(
  595. get!+mat!+entry(mat1,z,s),
  596. get!+mat!+entry(mat2,z,s)
  597. );
  598. sum:=subs2 sum where !*sub2=t;
  599. sum
  600. >>;
  601. return res;
  602. end;
  603. symbolic procedure mk!+mat!*mat!*mat(mat1,mat2,mat3);
  604. % returns a matrix= matrix1*matrix2*matrix3 (internal structure)
  605. begin
  606. scalar res;
  607. res:= mk!+mat!+mult!+mat(mat1,mat2);
  608. return mk!+mat!+mult!+mat(res,mat3);
  609. end;
  610. symbolic procedure add!+two!+mats(mat1,mat2);
  611. % returns a matrix=( matrix1, matrix2 )(internal structure)
  612. begin
  613. scalar dimz,z,res;
  614. if not(matrix!+p(mat1)) then rederr("no matrix in add");
  615. if not(matrix!+p(mat2)) then rederr("no matrix in add");
  616. dimz:=get!+row!+nr(mat1);
  617. if not(dimz = get!+row!+nr(mat2)) then rederr("wrong dim in add");
  618. res:=for z:=1:dimz collect
  619. append(nth(mat1,z),nth(mat2,z));
  620. return res;
  621. end;
  622. symbolic procedure mk!+scal!+mult!+mat(scal1,mat1);
  623. % returns a matrix= scalar*matrix (internal structure)
  624. begin
  625. scalar res,z,s,prod;
  626. if not(matrix!+p(mat1)) then rederr("no matrix in add");
  627. res:=for each z in mat1 collect
  628. for each s in z collect
  629. <<
  630. prod:=multsq(scal1,s);
  631. prod:=subs2 prod where !*sub2=t;
  632. prod
  633. >>;
  634. return res;
  635. end;
  636. symbolic procedure mk!+trace(mat1);
  637. % returns the trace of the matrix (internal structure)
  638. begin
  639. scalar spur,s;
  640. if not(squared!+matrix!+p(mat1)) then
  641. rederr("no square matrix in add");
  642. spur:=(nil ./ 1);
  643. for s:=1:get!+row!+nr(mat1) do
  644. spur:=addsq(spur,get!+mat!+entry(mat1,s,s));
  645. spur:=subs2 spur where !*sub2=t;
  646. return spur;
  647. end;
  648. symbolic procedure mk!+block!+diagonal!+mat(mats);
  649. % returns a blockdiagonal matrix from
  650. % a list of matrices (internal structure)
  651. begin
  652. if length(mats)<1 then rederr("no list in mkdiagonalmats");
  653. if length(mats)=1 then return car mats else
  654. return fill!+zeros(car mats,mk!+block!+diagonal!+mat(cdr(mats)));
  655. end;
  656. symbolic procedure fill!+zeros(mat1,mat2);
  657. % returns a blockdiagonal matrix from 2 matrices (internal structure)
  658. begin
  659. scalar nullmat1,nullmat2;
  660. nullmat1:=mk!+null!+mat(get!+row!+nr(mat2),get!+col!+nr(mat1));
  661. nullmat2:=mk!+null!+mat(get!+row!+nr(mat1),get!+col!+nr(mat2));
  662. return append(add!+two!+mats(mat1,nullmat2),
  663. add!+two!+mats(nullmat1,mat2));
  664. end;
  665. symbolic procedure mk!+outer!+mat(innermat);
  666. % returns a matrix for algebraic level
  667. begin
  668. scalar res,s,z;
  669. if not(matrix!+p(innermat)) then rederr("no matrix in mkoutermat");
  670. res:= for each z in innermat collect
  671. for each s in z collect
  672. prepsq s;
  673. return append(list('mat),res);
  674. end;
  675. symbolic procedure mk!+inner!+mat(outermat);
  676. % returns a matrix in internal structure
  677. begin
  678. scalar res,s,z;
  679. res:= for each z in cdr outermat collect
  680. for each s in z collect
  681. simp s;
  682. if matrix!+p(res) then return res else
  683. rederr("incorrect input in mkinnermat");
  684. end;
  685. symbolic procedure mk!+resimp!+mat(innermat);
  686. % returns a matrix in internal structure
  687. begin
  688. scalar res,s,z;
  689. res:= for each z in innermat collect
  690. for each s in z collect
  691. resimp s;
  692. return res;
  693. end;
  694. symbolic procedure mk!+null!+mat(dimz,dims);
  695. % returns a matrix of zeros in internal structure
  696. begin
  697. scalar nullsq,s,z,res;
  698. nullsq:=(nil ./ 1);
  699. res:=for z:=1:dimz collect
  700. for s:=1:dims collect nullsq;
  701. return res;
  702. end;
  703. symbolic procedure mk!+unit!+mat(dimension);
  704. % returns a squared unit matrix in internal structure
  705. begin
  706. return gen!+can!+bas(dimension);
  707. end;
  708. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  709. %
  710. % vector functions
  711. %
  712. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  713. symbolic procedure vector!+p(vector1);
  714. % returns the length of a vector
  715. % vector -- list of sqs
  716. begin
  717. if length(vector1)>0 then return t;
  718. end;
  719. symbolic procedure get!+vec!+dim(vector1);
  720. % returns the length of a vector
  721. % vector -- list of sqs
  722. begin
  723. return length(vector1);
  724. end;
  725. symbolic procedure get!+vec!+entry(vector1,elem);
  726. % returns the length of a vector
  727. % vector -- list of sqs
  728. begin
  729. return nth(vector1,elem);
  730. end;
  731. symbolic procedure mk!+mat!+mult!+vec(mat1,vector1);
  732. % returns a vector= matrix*vector (internal structure)
  733. begin
  734. scalar z;
  735. return for each z in mat1 collect
  736. mk!+real!+inner!+product(z,vector1);
  737. end;
  738. symbolic procedure mk!+scal!+mult!+vec(scal1,vector1);
  739. % returns a vector= scalar*vector (internal structure)
  740. begin
  741. scalar entry,res,h;
  742. res:=for each entry in vector1 collect
  743. <<
  744. h:=multsq(scal1,entry);
  745. h:=subs2 h where !*sub2=t;
  746. h
  747. >>;
  748. return res;
  749. end;
  750. symbolic procedure mk!+vec!+add!+vec(vector1,vector2);
  751. % returns a vector= vector1+vector2 (internal structure)
  752. begin
  753. scalar ent,res,h;
  754. res:=for ent:=1:get!+vec!+dim(vector1) collect
  755. <<
  756. h:= addsq(get!+vec!+entry(vector1,ent),
  757. get!+vec!+entry(vector2,ent));
  758. h:=subs2 h where !*sub2=t;
  759. h
  760. >>;
  761. return res;
  762. end;
  763. symbolic procedure mk!+squared!+norm(vector1);
  764. % returns a scalar= sum vector_i^2 (internal structure)
  765. begin
  766. return mk!+inner!+product(vector1,vector1);
  767. end;
  768. symbolic procedure my!+nullsq!+p(scal);
  769. % returns true, if ths sq is zero
  770. begin
  771. if null(numr( scal)) then return t;
  772. end;
  773. symbolic procedure mk!+null!+vec(dimen);
  774. % returns a vector of zeros
  775. begin
  776. scalar nullsq,i,res;
  777. nullsq:=(nil ./ 1);
  778. res:=for i:=1:dimen collect nullsq;
  779. return res;
  780. end;
  781. symbolic procedure mk!+conjugate!+vec(vector1);
  782. % returns a vector of zeros
  783. begin
  784. scalar z,res;
  785. res:=for each z in vector1 collect mk!+conjugate!+sq(z);
  786. return res;
  787. end;
  788. symbolic procedure null!+vec!+p(vector1);
  789. % returns a true, if vector is the zero vector
  790. begin
  791. if my!+nullsq!+p(mk!+squared!+norm(vector1)) then
  792. return t;
  793. end;
  794. symbolic procedure mk!+normalize!+vector(vector1);
  795. % returns a normalized vector (internal structure)
  796. begin
  797. scalar scalo,vecres;
  798. scalo:=simp!* {'sqrt, mk!*sq(mk!+squared!+norm(vector1))};
  799. if my!+nullsq!+p(scalo) then
  800. vecres:= mk!+null!+vec(get!+vec!+dim(vector1)) else
  801. <<
  802. scalo:=simp prepsq scalo;
  803. scalo:=quotsq((1 ./ 1),scalo);
  804. vecres:= mk!+scal!+mult!+vec(scalo,vector1);
  805. >>;
  806. return vecres;
  807. end;
  808. symbolic procedure mk!+inner!+product(vector1,vector2);
  809. % returns the inner product of vector1 and vector2 (internal structure)
  810. begin
  811. scalar z,sum,vec2;
  812. if not(get!+vec!+dim(vector1) = get!+vec!+dim(vector2)) then
  813. rederr("wrong dimensions in innerproduct");
  814. sum:=(nil ./ 1);
  815. if !*complex then vec2:=mk!+conjugate!+vec(vector2) else
  816. vec2:=vector2;
  817. for z:=1:get!+vec!+dim(vector1) do
  818. sum:=addsq(sum,multsq(
  819. get!+vec!+entry(vector1,z),
  820. get!+vec!+entry(vec2,z)
  821. )
  822. );
  823. sum:=subs2 sum where !*sub2=t;
  824. return sum;
  825. end;
  826. symbolic procedure mk!+real!+inner!+product(vector1,vector2);
  827. % returns the inner product of vector1 and vector2 (internal structure)
  828. begin
  829. scalar z,sum;
  830. if not(get!+vec!+dim(vector1) = get!+vec!+dim(vector2)) then
  831. rederr("wrong dimensions in innerproduct");
  832. sum:=(nil ./ 1);
  833. for z:=1:get!+vec!+dim(vector1) do
  834. sum:=addsq(sum,multsq(
  835. get!+vec!+entry(vector1,z),
  836. get!+vec!+entry(vector2,z)
  837. )
  838. );
  839. sum:=subs2 sum where !*sub2=t;
  840. return sum;
  841. end;
  842. symbolic procedure mk!+Gram!+Schmid(vectorlist,vector1);
  843. % returns a vectorlist of orthonormal vectors
  844. % assumptions: vectorlist is orthonormal basis, internal structure
  845. begin
  846. scalar i,orthovec,scalo,vectors;
  847. orthovec:=vector1;
  848. for i:=1:(length(vectorlist)) do
  849. <<
  850. scalo:= negsq(mk!+inner!+product(orthovec,nth(vectorlist,i)));
  851. orthovec:=mk!+vec!+add!+vec(orthovec,
  852. mk!+scal!+mult!+vec(scalo,nth(vectorlist,i)));
  853. >>;
  854. orthovec:=mk!+normalize!+vector(orthovec);
  855. if null!+vec!+p(orthovec) then
  856. vectors:=vectorlist else
  857. vectors:=add!+vector!+to!+list(orthovec,vectorlist);
  858. return vectors;
  859. end;
  860. symbolic procedure Gram!+Schmid(vectorlist);
  861. % returns a vectorlist of orthonormal vectors
  862. begin
  863. scalar ortholist,i;
  864. if length(vectorlist)<1 then rederr("error in Gram Schmid");
  865. if vector!+p(car vectorlist) then
  866. ortholist:=nil
  867. else rederr("strange in Gram-Schmid");
  868. for i:=1:length(vectorlist) do
  869. ortholist:=mk!+Gram!+Schmid(ortholist,nth(vectorlist,i));
  870. return ortholist;
  871. end;
  872. symbolic procedure add!+vector!+to!+list(vector1,vectorlist);
  873. % returns a list of vectors consisting of vectorlist
  874. % and the vector1 at the end
  875. % internal structure
  876. begin
  877. return append(vectorlist,list(vector1));
  878. end;
  879. symbolic procedure mk!+internal!+mat(vectorlist);
  880. % returns a matrix consisting of columns
  881. % equal to the vectors in vectorlist
  882. % internal structure
  883. begin
  884. return mk!+transpose!+matrix(vectorlist);
  885. end;
  886. symbolic procedure mat!+veclist(mat1);
  887. % returns a vectorlist consisting of the columns of the matrix
  888. % internal structure
  889. begin
  890. return mk!+transpose!+matrix(mat1);
  891. end;
  892. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  893. %
  894. % some useful functions
  895. %
  896. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  897. symbolic procedure change!+sq!+to!+int(scal1);
  898. % scal1 -- sq which is an integer
  899. % result is a nonnegative integer
  900. begin
  901. scalar nr;
  902. nr:=simp!* prepsq scal1;
  903. if (denr(nr) = 1) then return numr(nr) else
  904. rederr("no integer in change!+sq!+to!+int");
  905. end;
  906. symbolic procedure change!+int!+to!+sq(scal1);
  907. % scal1 -- integer for example 1 oder 2 oder 3
  908. % result is a sq
  909. begin
  910. return (scal1 ./ 1);
  911. end;
  912. symbolic procedure change!+sq!+to!+algnull(scal1);
  913. begin
  914. scalar rulesum,storecomp;
  915. if !*complex then
  916. <<
  917. storecomp:=t;
  918. off complex;
  919. >> else
  920. <<
  921. storecomp:=nil;
  922. >>;
  923. rulesum:=evalwhereexp ({'(list (list
  924. (REPLACEBY
  925. (COS (!~ X))
  926. (TIMES
  927. (QUOTIENT 1 2)
  928. (PLUS (EXPT E (TIMES I (!~ X))) (EXPT E (MINUS (TIMES I (!~ X))))) ))
  929. (REPLACEBY
  930. (SIN (!~ X))
  931. (TIMES
  932. (QUOTIENT 1 (times 2 i))
  933. (difference (EXPT E (TIMES I (!~ X)))
  934. (EXPT E (MINUS (TIMES I (!~ X))))) ))
  935. ))
  936. , prepsq(scal1)});
  937. rulesum:=reval rulesum;
  938. if storecomp then on complex;
  939. % print!-sq(simp (rulesum));
  940. return rulesum;
  941. end;
  942. symbolic procedure mk!+conjugate!+sq(mysq);
  943. begin
  944. return conjsq(mysq);
  945. % return subsq(mysq,'(( i . (minus i))));
  946. end;
  947. symbolic procedure mk!+equation(arg1,arg2);
  948. begin
  949. return list('equal,arg1,arg2);
  950. end;
  951. symbolic procedure outer!+equation!+p(outerlist);
  952. begin
  953. if eqcar(outerlist, 'equal) then return t
  954. end;
  955. symbolic procedure mk!+outer!+list(innerlist);
  956. begin
  957. return append (list('list),innerlist)
  958. end;
  959. symbolic procedure mk!+inner!+list(outerlist);
  960. begin
  961. if outer!+list!+p(outerlist) then return cdr outerlist;
  962. end;
  963. symbolic procedure outer!+list!+p(outerlist);
  964. begin
  965. if eqcar(outerlist, 'list) then return t
  966. end;
  967. symbolic procedure equal!+lists!+p(ll1,ll2);
  968. begin
  969. return (list!+in!+list!+p(ll1,ll2) and list!+in!+list!+p(ll2,ll1));
  970. end;
  971. symbolic procedure list!+in!+list!+p(ll1,ll2);
  972. begin
  973. if length(ll1)=0 then return t else
  974. return (memq(car ll1,ll2) and list!+in!+list!+p(cdr ll1,ll2));
  975. end;
  976. symbolic procedure print!-matrix(mat1);
  977. begin
  978. writepri (mkquote mk!+outer!+mat(mat1),'only);
  979. end;
  980. symbolic procedure print!-sq(mysq);
  981. begin
  982. writepri (mkquote prepsq(mysq),'only);
  983. end;
  984. endmodule;
  985. module symcheck;
  986. %
  987. % Symmetry Package
  988. %
  989. % Author : Karin Gatermann
  990. % Konrad-Zuse-Zentrum fuer
  991. % Informationstechnik Berlin
  992. % Heilbronner Str. 10
  993. % W-1000 Berlin 31
  994. % Germany
  995. % Email: Gatermann@sc.ZIB-Berlin.de
  996. % symcheck.red
  997. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  998. %
  999. % check user input -- used by functions in sym_main.red
  1000. %
  1001. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1002. symbolic procedure representation!:p(rep);
  1003. % returns true, if rep is a representation
  1004. begin
  1005. scalar group,elem,mats,mat1,dim1;
  1006. if length(rep)<0 then rederr("list too short");
  1007. if not(outer!+list!+p(rep)) then rederr("argument should be a list");
  1008. if (length(rep)<2) then rederr("empty list is not a representation");
  1009. group:=get!_group!_out(rep);
  1010. if not(available!*p(group) or storing!*p(group)) then
  1011. rederr("one element must be an identifier of an available group");
  1012. mats:=for each elem in get!*generators(group) collect
  1013. get!_repmatrix!_out(elem,rep);
  1014. for each mat1 in mats do
  1015. if not(alg!+matrix!+p(mat1)) then
  1016. rederr("there should be a matrix for each generator");
  1017. mats:=for each mat1 in mats collect mk!+inner!+mat(mat1);
  1018. for each mat1 in mats do
  1019. if not(squared!+matrix!+p(mat1)) then
  1020. rederr("matrices should be squared");
  1021. mat1:=car mats;
  1022. mats:=cdr mats;
  1023. dim1:=get!+row!+nr(mat1);
  1024. while length(mats)>0 do
  1025. <<
  1026. if not(dim1=get!+row!+nr(car mats)) then
  1027. rederr("representation matrices must have the same dimension");
  1028. mat1:=car mats;
  1029. mats:= cdr mats;
  1030. >>;
  1031. return t;
  1032. end;
  1033. symbolic procedure irr!:nr!:p(nr,group);
  1034. % returns true, if group is a group and information is available
  1035. % and nr is number of an irreducible representation
  1036. begin
  1037. if not(fixp(nr)) then rederr("nr should be an integer");
  1038. if (nr>0 and nr<= get!_nr!_irred!_reps(group)) then
  1039. return t;
  1040. end;
  1041. symbolic procedure symmetry!:p(matrix1,representation);
  1042. % returns true, if the matrix has the symmetry of this representation
  1043. % internal structures
  1044. begin
  1045. scalar group,glist,symmetryp,repmat;
  1046. group:=get!_group!_in(representation);
  1047. glist:=get!*generators(group);
  1048. symmetryp:=t;
  1049. while (symmetryp and (length(glist)>0)) do
  1050. <<
  1051. repmat:=get!_rep!_matrix!_in(car glist,representation);
  1052. if not (equal!+matrices!+p(
  1053. mk!+mat!+mult!+mat(repmat,matrix1),
  1054. mk!+mat!+mult!+mat(matrix1,repmat)) ) then
  1055. symmetryp:=nil;
  1056. glist:= cdr glist;
  1057. >>;
  1058. return symmetryp;
  1059. end;
  1060. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1061. %
  1062. % check functions used by definition of the group
  1063. %
  1064. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1065. symbolic procedure identifier!:list!:p(idlist);
  1066. % returns true if idlist is a list of identifiers
  1067. begin
  1068. if length(idlist)>0 then
  1069. <<
  1070. if idp(car idlist) then
  1071. return identifier!:list!:p(cdr idlist);
  1072. >> else
  1073. return t;
  1074. end;
  1075. symbolic procedure generator!:list!:p(group,generatorl);
  1076. % returns true if generatorl is an idlist
  1077. % consisting of the generators of the group
  1078. begin
  1079. scalar element,res;
  1080. res:=t;
  1081. if length(generatorl)<1 then
  1082. rederr("there should be a list of generators");
  1083. if length(get!*generators(group))<1 then
  1084. rederr("there are no group generators stored");
  1085. if not(identifier!:list!:p(generatorl)) then return nil;
  1086. for each element in generatorl do
  1087. if not(g!*generater!*p(group,element)) then
  1088. res:=nil;
  1089. return res;
  1090. end;
  1091. symbolic procedure relation!:list!:p(group,relations);
  1092. % relations -- list of two generator lists
  1093. begin
  1094. if length(get!*generators(group))<1 then
  1095. rederr("there are no group generators stored");
  1096. return (relation!:part!:p(group,car relations) and
  1097. relation!:part!:p(group,cadr relations))
  1098. end;
  1099. symbolic procedure relation!:part!:p(group,relationpart);
  1100. % relations -- list of two generator lists
  1101. begin
  1102. scalar generators,res,element;
  1103. res:=t;
  1104. generators:=get!*generators(group);
  1105. if length(generators)<1 then
  1106. rederr("there are no group generators stored");
  1107. if length(relationpart)<1 then
  1108. rederr("wrong relation given");
  1109. if not(identifier!:list!:p(relationpart)) then return nil;
  1110. generators:=append(list('id),generators);
  1111. for each element in relationpart do
  1112. if not(memq(element,generators)) then res:=nil;
  1113. return res;
  1114. end;
  1115. symbolic procedure group!:table!:p(group,gtable);
  1116. % returns true, if gtable is a group table
  1117. % gtable - matrix in internal representation
  1118. begin
  1119. scalar row;
  1120. if not(get!+mat!+entry(gtable,1,1) = 'grouptable) then
  1121. rederr("first diagonal entry in a group table must be grouptable");
  1122. for each row in gtable do
  1123. if not(group!:elemts!:p(group,cdr row)) then
  1124. rederr("this should be a group table");
  1125. for each row in mk!+transpose!+matrix(gtable) do
  1126. if not(group!:elemts!:p(group,cdr row)) then
  1127. rederr("this should be a group table");
  1128. return t;
  1129. end;
  1130. symbolic procedure group!:elemts!:p(group,elems);
  1131. % returns true if each element of group appears exactly once in the list
  1132. begin
  1133. return equal!+lists!+p(get!*elements(group),elems);
  1134. end;
  1135. symbolic procedure check!:complete!:rep!:p(group);
  1136. % returns true if sum ni^2 = grouporder and
  1137. % sum realni = sum complexni
  1138. begin
  1139. scalar nr,j,sum,dime,order1,sumreal,chars,complexcase;
  1140. nr:=get!*nr!*complex!*irred!*reps(group);
  1141. sum:=(nil ./ 1);
  1142. for j:=1:nr do
  1143. <<
  1144. dime:=change!+int!+to!+sq( get!_dimension!_in(
  1145. get!*complex!*irreducible!*rep(group,j)));
  1146. sum:=addsq(sum,multsq(dime,dime));
  1147. >>;
  1148. order1:=change!+int!+to!+sq(get!*order(group));
  1149. if not(null(numr(addsq(sum,negsq(order1))))) then
  1150. rederr("one complex irreducible representation missing or
  1151. is not irreducible");
  1152. sum:=(nil ./ 1);
  1153. for j:=1:nr do
  1154. <<
  1155. dime:=change!+int!+to!+sq( get!_dimension!_in(
  1156. get!*complex!*irreducible!*rep(group,j)));
  1157. sum:=addsq(sum,dime);
  1158. >>;
  1159. chars:=for j:=1:nr collect
  1160. get!*complex!*character(group,j);
  1161. if !*complex then
  1162. <<
  1163. complexcase:=t;
  1164. >> else
  1165. <<
  1166. complexcase:=nil;
  1167. on complex;
  1168. >>;
  1169. if not(orthogonal!:characters!:p(chars)) then
  1170. rederr("characters are not orthogonal");
  1171. if null(complexcase) then off complex;
  1172. nr:=get!*nr!*real!*irred!*reps(group);
  1173. sumreal:=(nil ./ 1);
  1174. for j:=1:nr do
  1175. <<
  1176. dime:=change!+int!+to!+sq( get!_dimension!_in(
  1177. get!*real!*irreducible!*rep(group,j)));
  1178. sumreal:=addsq(sumreal,dime);
  1179. >>;
  1180. chars:=for j:=1:nr collect
  1181. get!*real!*character(group,j);
  1182. if not(orthogonal!:characters!:p(chars)) then
  1183. rederr("characters are not orthogonal");
  1184. if not(null(numr(addsq(sum,negsq(sumreal))))) then
  1185. rederr("list real irreducible representation incomplete or wrong");
  1186. return t;
  1187. end;
  1188. symbolic procedure orthogonal!:characters!:p(chars);
  1189. % returns true if all characters in list are pairwise orthogonal
  1190. begin
  1191. scalar chars1,chars2,char1,char2;
  1192. chars1:=chars;
  1193. while (length(chars1)>0) do
  1194. <<
  1195. char1:=car chars1;
  1196. chars1:=cdr chars1;
  1197. chars2:=chars1;
  1198. while (length(chars2)>0) do
  1199. <<
  1200. char2:=car chars2;
  1201. chars2:=cdr chars2;
  1202. if not(change!+sq!+to!+algnull(
  1203. char!_prod(char1,char2))=0)
  1204. then rederr("not orthogonal");
  1205. >>;
  1206. >>;
  1207. return t;
  1208. end;
  1209. symbolic procedure write!:to!:file(group,filename);
  1210. begin
  1211. scalar nr,j;
  1212. if not(available!*p(group)) then rederr("group is not available");
  1213. out filename;
  1214. rprint(list
  1215. ('off, 'echo));
  1216. rprint('symbolic);
  1217. rprint(list
  1218. ('set!*elems!*group ,mkquote group,mkquote get!*elements(group)));
  1219. rprint(list
  1220. ('set!*generators, mkquote group,mkquote get!*generators(group)));
  1221. rprint(list
  1222. ('set!*relations, mkquote group,
  1223. mkquote get!*generator!*relations(group)));
  1224. rprint(list
  1225. ('set!*grouptable, mkquote group,mkquote get(group,'grouptable)));
  1226. rprint(list
  1227. ('set!*inverse, mkquote group,mkquote get(group,'inverse)));
  1228. rprint(list
  1229. ('set!*elemasgen, mkquote group
  1230. ,mkquote get(group,'elem!_in!_generators)));
  1231. rprint(list
  1232. ('set!*group, mkquote group,mkquote get(group,'equiclasses)));
  1233. nr:=get!*nr!*complex!*irred!*reps(group);
  1234. for j:=1:nr do
  1235. <<
  1236. rprint(list
  1237. ('set!*representation, mkquote group,
  1238. mkquote cdr get!*complex!*irreducible!*rep(group,j),
  1239. mkquote 'complex));
  1240. >>;
  1241. nr:=get!*nr!*real!*irred!*reps(group);
  1242. for j:=1:nr do
  1243. <<
  1244. rprint(list
  1245. ('set!*representation, mkquote group,
  1246. mkquote get(group,mkid('realrep,j)),mkquote 'real));
  1247. >>;
  1248. rprint(list(
  1249. 'set!*available,mkquote group));
  1250. rprint('algebraic);
  1251. rprint('end);
  1252. shut filename;
  1253. end;
  1254. symbolic procedure mk!_relation!_list(relations);
  1255. % input: outer structure : reval of {r*s*r^2=s,...}
  1256. % output: list of pairs of lists
  1257. begin
  1258. scalar twolist,eqrel;
  1259. if not(outer!+list!+p(relations)) then
  1260. rederr("this should be a list");
  1261. twolist:=for each eqrel in mk!+inner!+list(relations) collect
  1262. change!_eq!_to!_lists(eqrel);
  1263. return twolist;
  1264. end;
  1265. symbolic procedure change!_eq!_to!_lists(eqrel);
  1266. begin
  1267. if not(outer!+equation!+p(eqrel)) then
  1268. rederr("equations should be given");
  1269. return list(mk!_side!_to!_list(reval cadr eqrel),
  1270. mk!_side!_to!_list(reval caddr eqrel));
  1271. end;
  1272. symbolic procedure mk!_side!_to!_list(identifiers);
  1273. begin
  1274. scalar i;
  1275. if idp(identifiers) then return list(identifiers);
  1276. if eqcar(identifiers,'Plus) then rederr("no addition in this group");
  1277. if eqcar(identifiers,'EXPT) then
  1278. return for i:=1:(caddr identifiers) collect (cadr identifiers);
  1279. if eqcar(identifiers,'TIMES) then
  1280. rederr("no multiplication with * in this group");
  1281. if eqcar(identifiers,'!@) then
  1282. return append(mk!_side!_to!_list(cadr identifiers),
  1283. mk!_side!_to!_list(caddr identifiers));
  1284. end;
  1285. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1286. %
  1287. % pass to algebraic level
  1288. %
  1289. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1290. symbolic procedure alg!:print!:group(group);
  1291. % returns the group element list in correct algebraic mode
  1292. begin
  1293. return mk!+outer!+list(get!*elements(group));
  1294. end;
  1295. symbolic procedure alg!:generators(group);
  1296. % returns the generator list of a group in correct algebraic mode
  1297. begin
  1298. return append(list('list),get!*generators(group));
  1299. end;
  1300. symbolic procedure alg!:characters(group);
  1301. % returns the (real od complex) character table
  1302. % in correct algebraic mode
  1303. begin
  1304. scalar nr,i,charlist,chari;
  1305. nr:=get!_nr!_irred!_reps(group);
  1306. charlist:=for i:=1:nr collect
  1307. if !*complex then
  1308. get!*complex!*character(group,i) else
  1309. get!*real!*character(group,i);
  1310. charlist:= for each chari in charlist collect
  1311. alg!:print!:character(chari);
  1312. return mk!+outer!+list(charlist);
  1313. end;
  1314. symbolic procedure alg!:irr!:reps(group);
  1315. % returns the (real od complex) irr. rep. table
  1316. % in correct algebraic mode
  1317. begin
  1318. scalar repi,reps,nr,i;
  1319. nr:=get!_nr!_irred!_reps(group);
  1320. reps:=for i:=1:nr collect
  1321. if !*complex then
  1322. get!*complex!*irreducible!*rep(group,nr) else
  1323. get!*real!*irreducible!*rep(group,i);
  1324. reps:= for each repi in reps collect
  1325. alg!:print!:rep(repi);
  1326. return mk!+outer!+list(reps);
  1327. end;
  1328. symbolic procedure alg!:print!:rep(representation);
  1329. % returns the representation in correct algebraic mode
  1330. begin
  1331. scalar pair,repr,group,mat1,g;
  1332. group:=get!_group!_in(representation);
  1333. repr:=eli!_group!_in(representation);
  1334. repr:= for each pair in repr collect
  1335. <<
  1336. mat1:=cadr pair;
  1337. g:=car pair;
  1338. mat1:=mk!+outer!+mat(mat1);
  1339. mk!+equation(g,mat1)
  1340. >>;
  1341. repr:=append(list(group),repr);
  1342. return mk!+outer!+list(repr)
  1343. end;
  1344. symbolic procedure alg!:can!:decomp(representation);
  1345. % returns the canonical decomposition in correct algebraic mode
  1346. % representation in internal structure
  1347. begin
  1348. scalar nr,nrirr,ints,i,sum;
  1349. nrirr:=get!_nr!_irred!_reps(get!_group!_in(representation));
  1350. ints:=for nr:=1:nrirr collect
  1351. mk!_multiplicity(representation,nr);
  1352. sum:=( nil ./ 1);
  1353. ints:= for i:=1:length(ints) do
  1354. sum:=addsq(sum,
  1355. multsq(change!+int!+to!+sq(nth(ints,i)),
  1356. simp mkid('teta,i)
  1357. )
  1358. );
  1359. return mk!+equation('teta,prepsq sum);
  1360. end;
  1361. symbolic procedure alg!:print!:character(character);
  1362. % changes the character from internal representation
  1363. % to printable representation
  1364. begin
  1365. scalar group,res,equilists;
  1366. group:=get!_char!_group(character);
  1367. res:=get!*all!*equi!*classes(group);
  1368. res:= for each equilists in res collect
  1369. mk!+outer!+list(equilists);
  1370. res:= for each equilists in res collect
  1371. mk!+outer!+list( list(equilists,
  1372. prepsq get!_char!_value(character,cadr equilists)));
  1373. res:=append(list(group),res);
  1374. return mk!+outer!+list(res);
  1375. end;
  1376. endmodule;
  1377. module symchrep;
  1378. %
  1379. % Symmetry Package
  1380. %
  1381. % Author : Karin Gatermann
  1382. % Konrad-Zuse-Zentrum fuer
  1383. % Informationstechnik Berlin
  1384. % Heilbronner Str. 10
  1385. % W-1000 Berlin 31
  1386. % Germany
  1387. % Email: Gatermann@sc.ZIB-Berlin.de
  1388. % symchrep.red
  1389. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1390. %
  1391. % functions for representations in iternal structure
  1392. %
  1393. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1394. symbolic procedure mk!_internal(representation);
  1395. % transfers the user given representation structure to the
  1396. % internal structure
  1397. begin
  1398. scalar group,elems,generators,repgenerators,g,res;
  1399. group:=get!_group!_out(representation);
  1400. elems:=get!*elements(group);
  1401. generators:=get!*generators(group);
  1402. repgenerators:=mk!_rep!_relation(representation,generators);
  1403. if not(hard!_representation!_check!_p(group,repgenerators)) then
  1404. rederr("this is no representation");
  1405. res:=for each g in elems collect
  1406. list(g,
  1407. mk!_rep!_mat(
  1408. get!*elem!*in!*generators(group,g),
  1409. repgenerators)
  1410. );
  1411. return append(list(group),res);
  1412. end;
  1413. symbolic procedure hard!_representation!_check!_p(group,repgenerators);
  1414. % repgenerators -- ((g1,matg1),(g2,matg2),...)
  1415. begin
  1416. scalar checkp;
  1417. checkp:=t;
  1418. for each relation in get!*generator!*relations(group) do
  1419. if not(relation!_check!_p(relation,repgenerators)) then
  1420. checkp:=nil;
  1421. return checkp;
  1422. end;
  1423. symbolic procedure relation!_check!_p(relation,repgenerators);
  1424. begin
  1425. scalar mat1,mat2;
  1426. mat1:=mk!_relation!_mat(car relation, repgenerators);
  1427. mat2:=mk!_relation!_mat(cadr relation, repgenerators);
  1428. return equal!+matrices!+p(mat1,mat2);
  1429. end;
  1430. symbolic procedure mk!_relation!_mat(relationpart,repgenerators);
  1431. begin
  1432. scalar mat1,g;
  1433. mat1:=mk!+unit!+mat(get!+row!+nr(cadr car repgenerators));
  1434. for each g in relationpart do
  1435. mat1:=mk!+mat!+mult!+mat(mat1,get!_mat(g,repgenerators));
  1436. return mat1;
  1437. end;
  1438. symbolic procedure get!_mat(elem,repgenerators);
  1439. begin
  1440. scalar found,res;
  1441. if elem='id then
  1442. return mk!+unit!+mat(get!+row!+nr(cadr car repgenerators));
  1443. found:=nil;
  1444. while ((length(repgenerators)>0) and (null found)) do
  1445. <<
  1446. if elem = caar repgenerators then
  1447. <<
  1448. res:=cadr car repgenerators;
  1449. found := t;
  1450. >>;
  1451. repgenerators:=cdr repgenerators;
  1452. >>;
  1453. if found then return res else
  1454. rederr("error in get_mat");
  1455. end;
  1456. symbolic procedure mk!_rep!_mat(generatorl,repgenerators);
  1457. % returns the representation matrix (internal structure)
  1458. % of a group element represented in generatorl
  1459. begin
  1460. scalar mat1;
  1461. mat1:=mk!+unit!+mat(get!+row!+nr(cadr(car(repgenerators))));
  1462. for each generator in generatorl do
  1463. mat1:=mk!+mat!+mult!+mat(mat1,
  1464. get!_rep!_of!_generator(
  1465. generator,repgenerators)
  1466. );
  1467. return mat1;
  1468. end;
  1469. symbolic procedure get!_rep!_of!_generator(generator,repgenerators);
  1470. % returns the representation matrix (internal structure)
  1471. % of the generator
  1472. begin
  1473. scalar found,mate,ll;
  1474. if (generator='id) then return mk!+unit!+mat(
  1475. get!+row!+nr(cadr(car(repgenerators))));
  1476. found:=nil;
  1477. ll:=repgenerators;
  1478. while (not(found) and (length(ll)>0)) do
  1479. <<
  1480. if (caar(ll)=generator) then
  1481. <<
  1482. found:=t;
  1483. mate:=cadr(car(ll));
  1484. >>;
  1485. ll:=cdr ll;
  1486. >>;
  1487. if found then return mate else
  1488. rederr(" error in get rep of generators");
  1489. end;
  1490. symbolic procedure get!_group!_in(representation);
  1491. % returns the group of the internal data structure representation
  1492. begin
  1493. return car representation;
  1494. end;
  1495. symbolic procedure eli!_group!_in(representation);
  1496. % returns the internal data structure representation without group
  1497. begin
  1498. return cdr representation;
  1499. end;
  1500. symbolic procedure get!_rep!_matrix!_in(elem,representation);
  1501. % returns the matrix of the internal data structure representation
  1502. begin
  1503. scalar found,mate,replist;
  1504. found:=nil;
  1505. replist:=cdr representation;
  1506. while (null(found) and length(replist)>0) do
  1507. <<
  1508. if ((caar(replist)) = elem) then
  1509. <<
  1510. mate:=cadr(car (replist));
  1511. found:=t;
  1512. >>;
  1513. replist:=cdr replist;
  1514. >>;
  1515. if found then return mate else
  1516. rederr("error in get representation matrix");
  1517. end;
  1518. symbolic procedure get!_dimension!_in(representation);
  1519. % returns the dimension of the representation (internal data structure)
  1520. % output is an integer
  1521. begin
  1522. return change!+sq!+to!+int(mk!+trace(get!_rep!_matrix!_in('id,
  1523. representation)));
  1524. end;
  1525. symbolic procedure get!_rep!_matrix!_entry(representation,elem,z,s);
  1526. % get a special value of the matrix representation of group
  1527. % get the matrix of this representatiuon corresponding
  1528. % to the element elem
  1529. % returns the matrix element of row z and column s
  1530. begin
  1531. return get!+mat!+entry(
  1532. get!_rep!_matrix!_in(elem,representation),
  1533. z,s) ;
  1534. end;
  1535. symbolic procedure mk!_resimp!_rep(representation);
  1536. begin
  1537. scalar group,elem,res;
  1538. group:=get!_group!_in(representation);
  1539. res:=for each elem in get!*elements(group) collect
  1540. list(elem,mk!+resimp!+mat(get!_rep!_matrix!_in(elem,representation)));
  1541. return append(list(group),res);
  1542. end;
  1543. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1544. %
  1545. % functions for characters in iternal structure
  1546. %
  1547. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1548. symbolic procedure get!_char!_group(char1);
  1549. % returns the group of the internal data structure character
  1550. begin
  1551. return car char1;
  1552. end;
  1553. symbolic procedure get!_char!_dim(char1);
  1554. % returns the dimension of the internal data structure character
  1555. % output is an integer
  1556. begin
  1557. return change!+sq!+to!+int(get!_char!_value(char1,'id));
  1558. end;
  1559. symbolic procedure get!_char!_value(char1,elem);
  1560. % returns the value of an element
  1561. % of the internal data structure character
  1562. begin
  1563. scalar found,value,charlist;
  1564. found:=nil;
  1565. charlist:=cdr char1;
  1566. while (null(found) and length(charlist)>0) do
  1567. <<
  1568. if ((caar(charlist)) = elem) then
  1569. <<
  1570. value:=cadr(car (charlist));
  1571. found:=t;
  1572. >>;
  1573. charlist := cdr charlist;
  1574. >>;
  1575. if found then return value else
  1576. rederr("error in get character element");
  1577. end;
  1578. endmodule;
  1579. module symhandl;
  1580. %
  1581. % Symmetry Package
  1582. %
  1583. % Author: Karin Gatermann
  1584. % Konrad-Zuse-Zentrum fuer
  1585. % Informationstechnik Berlin
  1586. % Heilbronner Str. 10
  1587. % W-1000 Berlin 31
  1588. % Germany
  1589. % Email: Gatermann@sc.ZIB-Berlin.de
  1590. % symhandl.red
  1591. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1592. %
  1593. % functions to get the stored information of groups
  1594. % booleans first
  1595. %
  1596. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1597. symbolic procedure available!*p(group);
  1598. % returns true, if the information
  1599. % concerning irreducible representations
  1600. % of the group are in this database
  1601. begin
  1602. if not(idp(group)) then rederr("this is no group identifier");
  1603. return flagp(group,'available);
  1604. end;
  1605. symbolic procedure storing!*p(group);
  1606. % returns true, if the information concerning generators
  1607. % and group elements
  1608. % of the group are in this database
  1609. begin
  1610. return flagp(group,'storing);
  1611. end;
  1612. symbolic procedure g!*element!*p(group,element);
  1613. % returns true, if element is an element of the abstract group
  1614. begin
  1615. if memq(element,get!*elements(group)) then return t else return nil;
  1616. end;
  1617. symbolic procedure g!*generater!*p(group,element);
  1618. % returns true, if element is a generator of the abstract group
  1619. begin
  1620. if memq(element,get!*generators(group)) then return t else return nil;
  1621. end;
  1622. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1623. %
  1624. % operators for abstract group
  1625. %
  1626. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1627. symbolic procedure get!*available!*groups;
  1628. % returns the available groups as a list
  1629. begin
  1630. return get('availables,'groups);
  1631. end;
  1632. symbolic procedure get!*order(group);
  1633. % returns the order of group as integer
  1634. begin
  1635. return length(get!*elements(group));
  1636. end;
  1637. symbolic procedure get!*elements(group);
  1638. % returns the abstract elements of group
  1639. % output list of identifiers
  1640. begin
  1641. scalar ll;
  1642. return get(group,'elems);
  1643. end;
  1644. symbolic procedure get!*generators(group);
  1645. % returns a list abstract elements of group which generates the group
  1646. begin
  1647. return get(group,'generators);
  1648. end;
  1649. symbolic procedure get!*generator!*relations(group);
  1650. % returns a list with relations
  1651. % which are satisfied for the generators of the group
  1652. begin
  1653. return get(group,'relations);
  1654. end;
  1655. symbolic procedure get!*product(group,elem1,elem2);
  1656. % returns the element elem1*elem2 of group
  1657. begin
  1658. scalar table,above,left;
  1659. table:=get(group,'grouptable);
  1660. above:= car table;
  1661. left:=for each row in table collect car row;
  1662. return get!+mat!+entry(table,
  1663. give!*position(elem1,left),
  1664. give!*position(elem2,above));
  1665. end;
  1666. symbolic procedure get!*inverse(group,elem);
  1667. % returns the inverse element of the element elem in group
  1668. % invlist = ((g1,g2,..),(inv1,inv2,...))
  1669. begin
  1670. scalar invlist;
  1671. invlist:=get(group,'inverse);
  1672. return nth(cadr invlist,give!*position(elem,car invlist));
  1673. end;
  1674. symbolic procedure give!*position(elem,ll);
  1675. begin
  1676. scalar j,found;
  1677. j:=1; found:=nil;
  1678. while (null(found) and (j<=length(ll))) do
  1679. <<
  1680. if (nth(ll,j)=elem) then found:=t else j:=j+1;
  1681. >>;
  1682. if null(found) then rederr("error in give position");
  1683. return j;
  1684. end;
  1685. symbolic procedure get!*elem!*in!*generators(group,elem);
  1686. % returns the element representated by the generators of group
  1687. begin
  1688. scalar ll,found,res;
  1689. ll:=get(group,'elem!_in!_generators);
  1690. if (elem='id) then return list('id);
  1691. found:=nil;
  1692. while (null(found) and (length(ll)>0)) do
  1693. <<
  1694. if (elem=caaar ll) then
  1695. <<
  1696. res:=cadr car ll;
  1697. found:=t;
  1698. >>;
  1699. ll:=cdr ll;
  1700. >>;
  1701. if found then return res else
  1702. rederr("error in get!*elem!*in!*generators");
  1703. end;
  1704. symbolic procedure get!*nr!*equi!*classes(group);
  1705. % returns the number of equivalence classes of group
  1706. begin
  1707. return length(get(group,'equiclasses));
  1708. end;
  1709. symbolic procedure get!*equi!*class(group,elem);
  1710. % returns the equivalence class of the element elem in group
  1711. begin
  1712. scalar ll,equic,found;
  1713. ll:=get(group,'equiclasses);
  1714. found:=nil;
  1715. while (null(found) and (length(ll)>0)) do
  1716. <<
  1717. if memq(elem,car ll) then
  1718. <<
  1719. equic:=car ll;
  1720. found:=t;
  1721. >>;
  1722. ll:=cdr ll;
  1723. >>;
  1724. if found then return equic;
  1725. end;
  1726. symbolic procedure get!*all!*equi!*classes(group);
  1727. % returns the equivalence classes of the element elem in group
  1728. % list of lists of identifiers
  1729. begin
  1730. return get(group,'equiclasses);
  1731. end;
  1732. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1733. %
  1734. % functions to get information of real irred. representation of group
  1735. %
  1736. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1737. symbolic procedure get!*nr!*real!*irred!*reps(group);
  1738. % returns number of real irreducible representations of group
  1739. begin
  1740. return get(group,'realrepnumber);
  1741. end;
  1742. symbolic procedure get!*real!*character(group,nr);
  1743. % returns the nr-th real character of the group group
  1744. begin
  1745. return mk!_character(get!*real!*irreducible!*rep(group,nr));
  1746. end;
  1747. symbolic procedure get!*real!*comp!*chartype!*p(group,nr);
  1748. % returns true if the type of the real irreducible rep.
  1749. % of the group is complex
  1750. begin
  1751. if eqcar( get(group,mkid('realrep,nr)) ,'complextype) then return t;
  1752. end;
  1753. symbolic procedure get!*real!*irreducible!*rep(group,nr);
  1754. % returns the real nr-th irreducible matrix representation of group
  1755. begin
  1756. return mk!_resimp!_rep(append(list(group),
  1757. cdr get(group,mkid('realrep,nr))));
  1758. end;
  1759. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1760. %
  1761. % functions to get information of
  1762. % complex irreducible representation of group
  1763. %
  1764. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1765. symbolic procedure get!*nr!*complex!*irred!*reps(group);
  1766. % returns number of complex irreducible representations of group
  1767. begin
  1768. return get(group,'complexrepnumber);
  1769. end;
  1770. symbolic procedure get!*complex!*character(group,nr);
  1771. % returns the nr-th complex character of the group group
  1772. begin
  1773. return mk!_character(get!*complex!*irreducible!*rep(group,nr));
  1774. end;
  1775. symbolic procedure get!*complex!*irreducible!*rep(group,nr);
  1776. % returns the complex nr-th irreduciblematrix representation of group
  1777. begin
  1778. return mk!_resimp!_rep(append(list(group),
  1779. get(group,mkid('complexrep,nr))));
  1780. end;
  1781. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1782. %
  1783. % set information upon group
  1784. %
  1785. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1786. symbolic procedure set!*group(group,equiclasses);
  1787. %
  1788. begin
  1789. put(group,'equiclasses,equiclasses);
  1790. end;
  1791. symbolic procedure set!*elems!*group(group,elems);
  1792. %
  1793. begin
  1794. put(group,'elems,elems);
  1795. end;
  1796. symbolic procedure set!*generators(group,generators);
  1797. %
  1798. begin
  1799. put(group,'generators,generators);
  1800. end;
  1801. symbolic procedure set!*relations(group,relations);
  1802. %
  1803. begin
  1804. put(group,'relations,relations);
  1805. end;
  1806. symbolic procedure set!*available(group);
  1807. begin
  1808. scalar grouplist;
  1809. flag(list(group),'available);
  1810. grouplist:=get('availables,'groups);
  1811. grouplist:=append(grouplist,list(group));
  1812. put('availables,'groups,grouplist);
  1813. end;
  1814. symbolic procedure set!*storing(group);
  1815. begin
  1816. flag(list(group),'storing);
  1817. end;
  1818. symbolic procedure set!*grouptable(group,table);
  1819. %
  1820. begin
  1821. put(group,'grouptable,table);
  1822. end;
  1823. symbolic procedure set!*inverse(group,invlist);
  1824. % stores the inverse element list in group
  1825. begin
  1826. put(group,'inverse,invlist);
  1827. end;
  1828. symbolic procedure set!*elemasgen(group,glist);
  1829. %
  1830. begin
  1831. put(group,'elem!_in!_generators,glist);
  1832. end;
  1833. symbolic procedure set!*representation(group,replist,type);
  1834. %
  1835. begin
  1836. scalar nr;
  1837. nr:=get(group,mkid(type,'repnumber));
  1838. if null(nr) then nr:=0;
  1839. nr:=nr+1;
  1840. put(group,mkid(mkid(type,'rep),nr),replist);
  1841. set!*repnumber(group,type,nr);
  1842. end;
  1843. symbolic procedure set!*repnumber(group,type,nr);
  1844. %
  1845. begin
  1846. put(group,mkid(type,'repnumber),nr);
  1847. end;
  1848. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1849. %
  1850. % functions to build information upon group
  1851. %
  1852. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1853. symbolic procedure mk!*inverse!*list(table);
  1854. % returns ((elem1,elem2,..),(inv1,inv2,..))
  1855. begin
  1856. scalar elemlist,invlist,elem,row,column;
  1857. elemlist:=cdr(car (mk!+transpose!+matrix(table)));
  1858. invlist:=for each elem in elemlist collect
  1859. <<
  1860. row:=give!*position(elem,elemlist);
  1861. column:=give!*position('id,cdr nth(table,row+1));
  1862. nth(cdr(car table),column)
  1863. >>;
  1864. return list(elemlist,invlist);
  1865. end;
  1866. symbolic procedure mk!*equiclasses(table);
  1867. % returns ((elem1,elem2,..),(inv1,inv2,..))
  1868. begin
  1869. scalar elemlist,restlist,s,r,tt,ts;
  1870. scalar rows,rowt,columnt,columnr,equiclasses,equic,firstrow;
  1871. elemlist:=cdr(car (mk!+transpose!+matrix(table)));
  1872. restlist:=elemlist;
  1873. firstrow:=cdr car table;
  1874. equiclasses:=nil;
  1875. while (length(restlist)>0) do
  1876. <<
  1877. s:=car restlist;
  1878. rows:=give!*position(s,elemlist);
  1879. equic:=list(s);
  1880. restlist:=cdr restlist;
  1881. for each tt in elemlist do
  1882. <<
  1883. columnt:=give!*position(tt,firstrow);
  1884. rowt:=give!*position(tt,elemlist);
  1885. ts:=get!+mat!+entry(table,rows+1,columnt+1);
  1886. columnr:=give!*position(ts,cdr nth(table,rowt+1));
  1887. r:=nth(firstrow,columnr);
  1888. equic:=union(equic,list(r));
  1889. restlist:=delete(r,restlist);
  1890. >>;
  1891. equiclasses:=append(equiclasses,list(equic));
  1892. >>;
  1893. return equiclasses;
  1894. end;
  1895. endmodule;
  1896. module sympatch;
  1897. % from rprint.red
  1898. load!_package 'rprint;
  1899. fluid '(!*n buffp combuff!* curmark curpos orig pretop pretoprinf rmar);
  1900. symbolic procedure rprint u;
  1901. begin integer !*n; scalar buff,buffp,curmark,rmar,x;
  1902. curmark := 0;
  1903. buff := buffp := list list(0,0);
  1904. rmar := linelength nil;
  1905. x := get('!*semicol!*,pretop);
  1906. !*n := 0;
  1907. mprino1(u,list(caar x,cadar x));
  1908. % prin2ox ";";
  1909. prin2ox "$"; %3.11 91 KG
  1910. omarko curmark;
  1911. prinos buff
  1912. end;
  1913. % error in treatment of roots in connection
  1914. % with conjugate of complex numbers
  1915. symbolic procedure reimexpt u;
  1916. if cadr u eq 'e
  1917. then addsq(reimcos list('cos,reval list('times,'i,caddr u)),
  1918. multsq(simp list('minus,'i),
  1919. reimsin list('sin,reval list('times,'i,caddr u))))
  1920. else if fixp cadr u and cadr u > 0
  1921. and eqcar(caddr u,'quotient)
  1922. and fixp cadr caddr u
  1923. and fixp caddr caddr u
  1924. then mksq(u,1)
  1925. else addsq(mkrepart u,multsq(simp 'i,mkimpart u));
  1926. put('expt,'cmpxsplitfn,'reimexpt);
  1927. put('cos,'cmpxsplitfn,'reimcos);
  1928. put('sin,'cmpxsplitfn,'reimsin);
  1929. endmodule;
  1930. % algebraic repart(pi):=pi; % Present in 3.4.1 and later versions.
  1931. % algebraic impart(pi):=0;
  1932. % error in treatment of roots in connection
  1933. % with conjugate of complex numbers
  1934. % end;
  1935. module symwork;
  1936. %
  1937. % Symmetry Package
  1938. %
  1939. % Author : Karin Gatermann
  1940. % Konrad-Zuse-Zentrum fuer
  1941. % Informationstechnik Berlin
  1942. % Heilbronner Str. 10
  1943. % W-1000 Berlin 31
  1944. % Germany
  1945. % Email: Gatermann@sc.ZIB-Berlin.de
  1946. % symwork.red
  1947. % underground functions
  1948. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1949. %
  1950. % Boolean functions
  1951. %
  1952. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1953. %symbolic procedure complex!_case!_p();
  1954. % returns true, if complex arithmetic is desired
  1955. %begin
  1956. % if !*complex then return t else return nil;
  1957. %end;
  1958. switch outerzeroscheck;
  1959. symbolic procedure correct!_diagonal!_p(matrix,representation,mats);
  1960. % returns true, if matrix may be block diagonalized to mats
  1961. begin
  1962. scalar basis,diag;
  1963. basis:=mk!_sym!_basis (representation);
  1964. diag:= mk!+mat!*mat!*mat(
  1965. mk!+hermitean!+matrix(basis),
  1966. matrix,basis);
  1967. if equal!+matrices!+p(diag,mats) then return t;
  1968. end;
  1969. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1970. %
  1971. % functions on data depending on real or complex case
  1972. %
  1973. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1974. symbolic procedure get!_nr!_irred!_reps(group);
  1975. % returns number of irreducible representations of group
  1976. begin
  1977. if !*complex then
  1978. return get!*nr!*complex!*irred!*reps(group) else
  1979. return get!*nr!*real!*irred!*reps(group);
  1980. end;
  1981. symbolic procedure get!_dim!_irred!_reps(group,nr);
  1982. % returns dimension of nr-th irreducible representations of group
  1983. begin
  1984. scalar rep;
  1985. % if !*complex then
  1986. % return get!_char!_dim(get!*complex!*character(group,nr)) else
  1987. % return get!_char!_dim(get!*real!*character(group,nr));
  1988. if !*complex then
  1989. rep:= get!*complex!*irreducible!*rep(group,nr) else
  1990. rep:= get!*real!*irreducible!*rep(group,nr);
  1991. return get!_dimension!_in(rep);
  1992. end;
  1993. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1994. %
  1995. % functions for user given representations
  1996. %
  1997. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1998. symbolic procedure get!_group!_out(representation);
  1999. % returns the group identifier given in representation
  2000. begin
  2001. scalar group,found,eintrag,repl;
  2002. found:=nil;
  2003. repl:=cdr representation;
  2004. while (not(found) and (length(repl)>1)) do
  2005. <<
  2006. eintrag:=car repl;
  2007. repl:=cdr repl;
  2008. if idp(eintrag) then
  2009. <<
  2010. group:=eintrag;
  2011. found:=t;
  2012. >>;
  2013. >>;
  2014. if found then return group else
  2015. rederr("group identifier missing");
  2016. end;
  2017. symbolic procedure get!_repmatrix!_out(elem,representation);
  2018. % returns the representation matrix of elem given in representation
  2019. % output in internal structure
  2020. begin
  2021. scalar repl,found,matelem,eintrag;
  2022. found:=nil;
  2023. repl:= cdr representation;
  2024. while (null(found) and (length(repl)>0)) do
  2025. <<
  2026. eintrag:=car repl;
  2027. repl:=cdr repl;
  2028. if eqcar(eintrag,'equal) then
  2029. <<
  2030. if not(length(eintrag) = 3) then
  2031. rederr("incomplete equation");
  2032. if (cadr(eintrag) = elem) then
  2033. <<
  2034. found:=t;
  2035. matelem:=caddr eintrag;
  2036. >>;
  2037. >>;
  2038. >>;
  2039. if found then return matelem else
  2040. rederr("representation matrix for one generator missing");
  2041. end;
  2042. symbolic procedure mk!_rep!_relation(representation,generators);
  2043. % representation in user given structure
  2044. % returns a list of pairs with generator and its representation matrix
  2045. % in internal structure
  2046. begin
  2047. scalar g,matg,res;
  2048. res:=for each g in generators collect
  2049. <<
  2050. matg:= mk!+inner!+mat(get!_repmatrix!_out(g,representation));
  2051. if not(unitarian!+p(matg)) then
  2052. rederr("please give an orthogonal or unitarian matrix");
  2053. list(g,matg)
  2054. >>;
  2055. return res;
  2056. end;
  2057. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2058. %
  2059. % functions which compute, do the real work, get correct arguments
  2060. % and use get-functions from sym_handle_data.red
  2061. %
  2062. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2063. symbolic procedure mk!_character(representation);
  2064. % returns the character of the representation (in internal structure)
  2065. % result in internal structure
  2066. begin
  2067. scalar group,elem,char;
  2068. group:=get!_group!_in(representation);
  2069. char:= for each elem in get!*elements(group) collect
  2070. list(elem,
  2071. mk!+trace(get!_rep!_matrix!_in(
  2072. elem,representation)
  2073. )
  2074. );
  2075. char:=append(list(group),char);
  2076. return char;
  2077. end;
  2078. symbolic procedure mk!_multiplicity(representation,nr);
  2079. % returns the multiplicity of the nr-th rep. in representation
  2080. % internal structure
  2081. begin
  2082. scalar multnr,char1,group;
  2083. group:=get!_group!_in(representation);
  2084. if !*complex then
  2085. char1:=mk!_character(get!*complex!*irreducible!*rep(group,nr))
  2086. else
  2087. char1:=mk!_character(get!*real!*irreducible!*rep(group,nr));
  2088. multnr:=char!_prod(char1,mk!_character(representation));
  2089. % complex case factor 1/2 !!
  2090. if (not(!*complex) and
  2091. (get!*real!*comp!*chartype!*p(group,nr))) then
  2092. multnr:=multsq(multnr,(1 ./ 2));
  2093. return change!+sq!+to!+int(multnr);
  2094. end;
  2095. symbolic procedure char!_prod(char1,char2);
  2096. % returns the inner product of the two characters as sq
  2097. begin
  2098. scalar group,elems,sum,g,product;
  2099. group:=get!_char!_group(char1);
  2100. if not(group = get!_char!_group(char2))
  2101. then rederr("no product for two characters of different groups");
  2102. if not (available!*p(group)) and not(storing!*p(group)) then
  2103. rederr("strange group in character product");
  2104. elems:=get!*elements(group);
  2105. sum:=nil ./ 1;
  2106. for each g in elems do
  2107. <<
  2108. product:=multsq(
  2109. get!_char!_value(char1,g),
  2110. get!_char!_value(char2,get!*inverse(group,g))
  2111. );
  2112. sum:=addsq(sum,product);
  2113. >>;
  2114. return quotsq(sum,change!+int!+to!+sq(get!*order(group)));
  2115. end;
  2116. symbolic procedure mk!_proj!_iso(representation,nr);
  2117. % returns the projection onto the isotypic component nr
  2118. begin
  2119. scalar group,elems,g,charnr,dimen,mapping,fact;
  2120. group:=get!_group!_in(representation);
  2121. if not (available!*p(group)) then
  2122. rederr("strange group in projection");
  2123. if not(irr!:nr!:p(nr,group)) then
  2124. rederr("incorrect number of representation");
  2125. elems:=get!*elements(group);
  2126. if !*complex then
  2127. charnr:=
  2128. mk!_character(get!*complex!*irreducible!*rep(group,nr))
  2129. else
  2130. charnr:=mk!_character(get!*real!*irreducible!*rep(group,nr));
  2131. dimen:=get!_dimension!_in(representation);
  2132. mapping:=mk!+null!+mat(dimen,dimen);
  2133. for each g in elems do
  2134. <<
  2135. mapping:=mk!+mat!+plus!+mat(
  2136. mapping,
  2137. mk!+scal!+mult!+mat(
  2138. get!_char!_value(charnr,get!*inverse(group,g)),
  2139. get!_rep!_matrix!_in(g,representation)
  2140. )
  2141. );
  2142. >>;
  2143. fact:=quotsq(change!+int!+to!+sq(get!_char!_dim(charnr)),
  2144. change!+int!+to!+sq(get!*order(group)));
  2145. mapping:=mk!+scal!+mult!+mat(fact,mapping);
  2146. % complex case factor 1/2 !!
  2147. if (not(!*complex) and
  2148. (get!*real!*comp!*chartype!*p(group,nr))) then
  2149. mapping:=mk!+scal!+mult!+mat((1 ./ 2),mapping);
  2150. return mapping;
  2151. end;
  2152. symbolic procedure mk!_proj!_first(representation,nr);
  2153. % returns the projection onto the first vector space of the
  2154. % isotypic component nr
  2155. begin
  2156. scalar group,elems,g,irrrep,dimen,mapping,fact,charnr,irrdim;
  2157. group:=get!_group!_in(representation);
  2158. if not (available!*p(group)) then
  2159. rederr("strange group in projection");
  2160. if not(irr!:nr!:p(nr,group)) then
  2161. rederr("incorrect number of representation");
  2162. elems:=get!*elements(group);
  2163. if !*complex then
  2164. irrrep:=get!*complex!*irreducible!*rep(group,nr) else
  2165. irrrep:=get!*real!*irreducible!*rep(group,nr);
  2166. dimen:=get!_dimension!_in(representation);
  2167. mapping:=mk!+null!+mat(dimen,dimen);
  2168. for each g in elems do
  2169. <<
  2170. mapping:=mk!+mat!+plus!+mat(
  2171. mapping,
  2172. mk!+scal!+mult!+mat(
  2173. get!_rep!_matrix!_entry(irrrep,get!*inverse(group,g),1,1),
  2174. get!_rep!_matrix!_in(g,representation)
  2175. )
  2176. );
  2177. >>;
  2178. irrdim:=get!_dimension!_in(irrrep);
  2179. fact:=quotsq(change!+int!+to!+sq(irrdim),
  2180. change!+int!+to!+sq(get!*order(group)));
  2181. mapping:=mk!+scal!+mult!+mat(fact,mapping);
  2182. % no special rule for real irreducible representations of complex type
  2183. return mapping;
  2184. end;
  2185. symbolic procedure mk!_mapping(representation,nr,count);
  2186. % returns the mapping from V(nr 1) to V(nr count)
  2187. % output is internal matrix
  2188. begin
  2189. scalar group,elems,g,irrrep,dimen,mapping,fact,irrdim;
  2190. group:=get!_group!_in(representation);
  2191. if not (available!*p(group)) then
  2192. rederr("strange group in projection");
  2193. if not(irr!:nr!:p(nr,group)) then
  2194. rederr("incorrect number of representation");
  2195. elems:=get!*elements(group);
  2196. if !*complex then
  2197. irrrep:=get!*complex!*irreducible!*rep(group,nr) else
  2198. irrrep:=get!*real!*irreducible!*rep(group,nr);
  2199. dimen:=get!_dimension!_in(representation);
  2200. mapping:=mk!+null!+mat(dimen,dimen);
  2201. for each g in elems do
  2202. <<
  2203. mapping:=mk!+mat!+plus!+mat(
  2204. mapping,
  2205. mk!+scal!+mult!+mat(
  2206. get!_rep!_matrix!_entry(irrrep,get!*inverse(group,g),1,count),
  2207. get!_rep!_matrix!_in(g,representation)
  2208. )
  2209. );
  2210. >>;
  2211. irrdim:=get!_dimension!_in(irrrep);
  2212. fact:=quotsq(change!+int!+to!+sq(irrdim),
  2213. change!+int!+to!+sq(get!*order(group)));
  2214. mapping:=mk!+scal!+mult!+mat(fact,mapping);
  2215. % no special rule for real irreducible representations of complex type
  2216. return mapping;
  2217. end;
  2218. symbolic procedure mk!_part!_sym (representation,nr);
  2219. % computes the symmetry adapted basis of component nr
  2220. % output matrix
  2221. begin
  2222. scalar unitlist, veclist2, mapping, v;
  2223. unitlist:=gen!+can!+bas(get!_dimension!_in(representation));
  2224. mapping:=mk!_proj!_iso(representation,nr);
  2225. veclist2:= for each v in unitlist collect
  2226. mk!+mat!+mult!+vec(mapping,v);
  2227. return mk!+internal!+mat(Gram!+Schmid(veclist2));
  2228. end;
  2229. symbolic procedure mk!_part!_sym1 (representation,nr);
  2230. % computes the symmetry adapted basis of component V(nr 1)
  2231. % internal structure for in and out
  2232. % output matrix
  2233. begin
  2234. scalar unitlist, veclist2, mapping, v,group;
  2235. unitlist:=gen!+can!+bas(get!_dimension!_in(representation));
  2236. group:=get!_group!_in (representation);
  2237. if (not(!*complex) and
  2238. get!*real!*comp!*chartype!*p(group,nr)) then
  2239. <<
  2240. mapping:=mk!_proj!_iso(representation,nr);
  2241. >> else
  2242. mapping:=mk!_proj!_first(representation,nr);
  2243. veclist2:= for each v in unitlist collect
  2244. mk!+mat!+mult!+vec(mapping,v);
  2245. veclist2:=mk!+resimp!+mat(veclist2);
  2246. return mk!+internal!+mat(Gram!+Schmid(veclist2));
  2247. end;
  2248. symbolic procedure mk!_part!_symnext (representation,nr,count,mat1);
  2249. % computes the symmetry adapted basis of component V(nr count)
  2250. % internal structure for in and out -- count > 2
  2251. % bas1 -- internal matrix
  2252. % output matrix
  2253. begin
  2254. scalar veclist1, veclist2, mapping, v;
  2255. mapping:=mk!_mapping(representation,nr,count);
  2256. veclist1:=mat!+veclist(mat1);
  2257. veclist2:= for each v in veclist1 collect
  2258. mk!+mat!+mult!+vec(mapping,v);
  2259. return mk!+internal!+mat(veclist2);
  2260. end;
  2261. symbolic procedure mk!_sym!_basis (representation);
  2262. % computes the complete symmetry adapted basis
  2263. % internal structure for in and out
  2264. begin
  2265. scalar nr,anz,group,dimen,mats,matels,mat1,mat2;
  2266. group:=get!_group!_in(representation);
  2267. anz:=get!_nr!_irred!_reps(group);
  2268. mats:=for nr := 1:anz join
  2269. if not(null(mk!_multiplicity(representation,nr))) then
  2270. <<
  2271. if get!_dim!_irred!_reps(group,nr)=1 then
  2272. mat1:=mk!_part!_sym (representation,nr)
  2273. else
  2274. mat1:=mk!_part!_sym1 (representation,nr);
  2275. if (not(!*complex) and
  2276. get!*real!*comp!*chartype!*p(group,nr)) then
  2277. <<
  2278. matels:=list(mat1);
  2279. >> else
  2280. <<
  2281. if get!_dim!_irred!_reps(group,nr)=1 then
  2282. <<
  2283. matels:=list(mat1);
  2284. >> else
  2285. <<
  2286. matels:=
  2287. for dimen:=2:get!_dim!_irred!_reps(group,nr) collect
  2288. mk!_part!_symnext(representation,nr,dimen,mat1);
  2289. matels:=append(list(mat1),matels);
  2290. >>;
  2291. >>;
  2292. matels
  2293. >>;
  2294. if length(mats)<1 then rederr("no mats in mk!_sym!_basis");
  2295. mat2:=car mats;
  2296. for each mat1 in cdr mats do
  2297. mat2:=add!+two!+mats(mat2,mat1);
  2298. return mat2;
  2299. end;
  2300. symbolic procedure mk!_part!_sym!_all (representation,nr);
  2301. % computes the complete symmetry adapted basis
  2302. % internal structure for in and out
  2303. begin
  2304. scalar group,dimen,matels,mat1,mat2;
  2305. group:=get!_group!_in(representation);
  2306. if get!_dim!_irred!_reps(group,nr)=1 then
  2307. mat1:=mk!_part!_sym (representation,nr)
  2308. else
  2309. <<
  2310. mat1:=mk!_part!_sym1 (representation,nr);
  2311. if (not(!*complex) and
  2312. get!*real!*comp!*chartype!*p(group,nr)) then
  2313. <<
  2314. mat1:=mat1;
  2315. >> else
  2316. <<
  2317. if get!_dim!_irred!_reps(group,nr)>1 then
  2318. << matels:=
  2319. for dimen:=2:get!_dim!_irred!_reps(group,nr) collect
  2320. mk!_part!_symnext(representation,nr,dimen,mat1);
  2321. for each mat2 in matels do
  2322. mat1:=add!+two!+mats(mat1,mat2);
  2323. >>;
  2324. >>;
  2325. >>;
  2326. return mat1;
  2327. end;
  2328. symbolic procedure mk!_diagonal (matrix1,representation);
  2329. % computes the matrix in diagonal form
  2330. % internal structure for in and out
  2331. begin
  2332. scalar nr,anz,mats,group,mat1,diamats,matdia,dimen;
  2333. group:=get!_group!_in(representation);
  2334. anz:=get!_nr!_irred!_reps(group);
  2335. mats:=for nr := 1:anz join
  2336. if not(null(mk!_multiplicity(representation,nr))) then
  2337. <<
  2338. if get!_dim!_irred!_reps(group,nr)=1 then
  2339. mat1:=mk!_part!_sym (representation,nr)
  2340. else
  2341. mat1:=mk!_part!_sym1 (representation,nr);
  2342. % if (not(!*complex) and
  2343. % get!*real!*comp!*chartype!*p(group,nr)) then
  2344. % mat1:=add!+two!+mats(mat1,
  2345. % mk!_part!_symnext(representation,nr,2,mat1));
  2346. matdia:= mk!+mat!*mat!*mat(
  2347. mk!+hermitean!+matrix(mat1),matrix1,mat1
  2348. );
  2349. if (not(!*complex) and
  2350. get!*real!*comp!*chartype!*p(group,nr)) then
  2351. <<
  2352. diamats:=list(matdia);
  2353. >> else
  2354. <<
  2355. diamats:=
  2356. for dimen:=1:get!_dim!_irred!_reps(group,nr) collect
  2357. matdia;
  2358. >>;
  2359. diamats
  2360. >>;
  2361. mats:=mk!+block!+diagonal!+mat(mats);
  2362. if !*outerzeroscheck then
  2363. if not(correct!_diagonal!_p(matrix1,representation,mats)) then
  2364. rederr("wrong diagonalisation");
  2365. return mats;
  2366. end;
  2367. endmodule;
  2368. % Data for symmetry package, part 1.
  2369. % symbolic$ % Turning this on here causes problems with some builds.
  2370. set!*elems!*group('z2,'(id sz2))$
  2371. set!*generators('z2,'(sz2))$
  2372. set!*relations('z2,'(((sz2 sz2) (id))))$
  2373. set!*grouptable('z2,'((grouptable id sz2) (id id sz2) (sz2 sz2 id)))$
  2374. set!*inverse('z2,'((id sz2) (id sz2)))$
  2375. set!*elemasgen('z2,'(((sz2) (sz2))))$
  2376. set!*group('z2,'((id) (sz2)))$
  2377. set!*representation('z2,'((id (((1 . 1)))) (sz2 (((1 . 1))))),'complex)$
  2378. set!*representation('z2,
  2379. '((id (((1 . 1)))) (sz2 (((-1 . 1))))),'complex)$
  2380. set!*representation('z2,
  2381. '(realtype (id (((1 . 1)))) (sz2 (((1 . 1))))),'real)$
  2382. set!*representation('z2,
  2383. '(realtype (id (((1 . 1)))) (sz2 (((-1 . 1))))),'real)$
  2384. set!*available 'z2$
  2385. set!*elems!*group('k4,'(id s1k4 s2k4 rk4))$
  2386. set!*generators('k4,'(s1k4 s2k4))$
  2387. set!*relations('k4,
  2388. '(((s1k4 s1k4) (id))
  2389. ((s2k4 s2k4) (id))
  2390. ((s1k4 s2k4) (s2k4 s1k4))))$
  2391. set!*grouptable('k4,
  2392. '((grouptable id s1k4 s2k4 rk4)
  2393. (id id s1k4 s2k4 rk4)
  2394. (s1k4 s1k4 id rk4 s2k4)
  2395. (s2k4 s2k4 rk4 id s1k4)
  2396. (rk4 rk4 s2k4 s1k4 id)))$
  2397. set!*inverse('k4,'((id s1k4 s2k4 rk4) (id s1k4 s2k4 rk4)))$
  2398. set!*elemasgen('k4,
  2399. '(((s1k4) (s1k4)) ((s2k4) (s2k4)) ((rk4) (s1k4 s2k4))))$
  2400. set!*group('k4,'((id) (s1k4) (s2k4) (rk4)))$
  2401. set!*representation('k4,
  2402. '((id (((1 . 1))))
  2403. (s1k4 (((1 . 1))))
  2404. (s2k4 (((1 . 1))))
  2405. (rk4 (((1 . 1))))),'complex)$
  2406. set!*representation('k4,
  2407. '((id (((1 . 1))))
  2408. (s1k4 (((-1 . 1))))
  2409. (s2k4 (((1 . 1))))
  2410. (rk4 (((-1 . 1))))),'complex)$
  2411. set!*representation('k4,
  2412. '((id (((1 . 1))))
  2413. (s1k4 (((1 . 1))))
  2414. (s2k4 (((-1 . 1))))
  2415. (rk4 (((-1 . 1))))),'complex)$
  2416. set!*representation('k4,
  2417. '((id (((1 . 1))))
  2418. (s1k4 (((-1 . 1))))
  2419. (s2k4 (((-1 . 1))))
  2420. (rk4 (((1 . 1))))),'complex)$
  2421. set!*representation('k4,
  2422. '(realtype
  2423. (id (((1 . 1))))
  2424. (s1k4 (((1 . 1))))
  2425. (s2k4 (((1 . 1))))
  2426. (rk4 (((1 . 1))))),'real)$
  2427. set!*representation('k4,
  2428. '(realtype
  2429. (id (((1 . 1))))
  2430. (s1k4 (((-1 . 1))))
  2431. (s2k4 (((1 . 1))))
  2432. (rk4 (((-1 . 1))))),'real)$
  2433. set!*representation('k4,
  2434. '(realtype
  2435. (id (((1 . 1))))
  2436. (s1k4 (((1 . 1))))
  2437. (s2k4 (((-1 . 1))))
  2438. (rk4 (((-1 . 1))))),'real)$
  2439. set!*representation('k4,
  2440. '(realtype
  2441. (id (((1 . 1))))
  2442. (s1k4 (((-1 . 1))))
  2443. (s2k4 (((-1 . 1))))
  2444. (rk4 (((1 . 1))))),'real)$
  2445. set!*available 'k4$
  2446. set!*elems!*group('d3,'(id rd3 rot2d3 sd3 srd3 sr2d3))$
  2447. set!*generators('d3,'(rd3 sd3))$
  2448. set!*relations('d3,
  2449. '(((sd3 sd3) (id))
  2450. ((rd3 rd3 rd3) (id))
  2451. ((sd3 rd3 sd3) (rd3 rd3))))$
  2452. set!*grouptable('d3,
  2453. '((grouptable id rd3 rot2d3 sd3 srd3 sr2d3)
  2454. (id id rd3 rot2d3 sd3 srd3 sr2d3)
  2455. (rd3 rd3 rot2d3 id sr2d3 sd3 srd3)
  2456. (rot2d3 rot2d3 id rd3 srd3 sr2d3 sd3)
  2457. (sd3 sd3 srd3 sr2d3 id rd3 rot2d3)
  2458. (srd3 srd3 sr2d3 sd3 rot2d3 id rd3)
  2459. (sr2d3 sr2d3 sd3 srd3 rd3 rot2d3 id)))$
  2460. set!*inverse('d3,
  2461. '((id rd3 rot2d3 sd3 srd3 sr2d3) (id rot2d3 rd3 sd3 srd3 sr2d3)))$
  2462. set!*elemasgen('d3,
  2463. '(((rd3) (rd3))
  2464. ((rot2d3) (rd3 rd3))
  2465. ((sd3) (sd3))
  2466. ((srd3) (sd3 rd3))
  2467. ((sr2d3) (sd3 rd3 rd3))))$
  2468. set!*group('d3,'((id) (rd3 rot2d3) (sr2d3 sd3 srd3)))$
  2469. set!*representation('d3,
  2470. '((id (((1 . 1))))
  2471. (rd3 (((1 . 1))))
  2472. (rot2d3 (((1 . 1))))
  2473. (sd3 (((1 . 1))))
  2474. (srd3 (((1 . 1))))
  2475. (sr2d3 (((1 . 1))))),'complex)$
  2476. set!*representation('d3,
  2477. '((id (((1 . 1))))
  2478. (rd3 (((1 . 1))))
  2479. (rot2d3 (((1 . 1))))
  2480. (sd3 (((-1 . 1))))
  2481. (srd3 (((-1 . 1))))
  2482. (sr2d3 (((-1 . 1))))),'complex)$
  2483. set!*representation('d3,
  2484. '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2485. (rd3
  2486. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  2487. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  2488. (-1 . 2))))
  2489. (rot2d3
  2490. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  2491. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  2492. (sd3 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2493. (srd3
  2494. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  2495. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  2496. (sr2d3
  2497. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  2498. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  2499. (1 . 2))))),'complex)$
  2500. set!*representation('d3,
  2501. '(realtype
  2502. (id (((1 . 1))))
  2503. (rd3 (((1 . 1))))
  2504. (rot2d3 (((1 . 1))))
  2505. (sd3 (((1 . 1))))
  2506. (srd3 (((1 . 1))))
  2507. (sr2d3 (((1 . 1))))),'real)$
  2508. set!*representation('d3,
  2509. '(realtype
  2510. (id (((1 . 1))))
  2511. (rd3 (((1 . 1))))
  2512. (rot2d3 (((1 . 1))))
  2513. (sd3 (((-1 . 1))))
  2514. (srd3 (((-1 . 1))))
  2515. (sr2d3 (((-1 . 1))))),'real)$
  2516. set!*representation('d3,
  2517. '(realtype
  2518. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2519. (rd3
  2520. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  2521. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  2522. (-1 . 2))))
  2523. (rot2d3
  2524. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  2525. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  2526. (sd3 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2527. (srd3
  2528. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  2529. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  2530. (sr2d3
  2531. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  2532. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  2533. (1 . 2))))),'real)$
  2534. set!*available 'd3$
  2535. set!*elems!*group('d4,'(id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4))$
  2536. set!*generators('d4,'(rd4 sd4))$
  2537. set!*relations('d4,
  2538. '(((sd4 sd4) (id))
  2539. ((rd4 rd4 rd4 rd4) (id))
  2540. ((sd4 rd4 sd4) (rd4 rd4 rd4))))$
  2541. set!*grouptable('d4,
  2542. '((grouptable id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4)
  2543. (id id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4)
  2544. (rd4 rd4 rot2d4 rot3d4 id sr3d4 sd4 srd4 sr2d4)
  2545. (rot2d4 rot2d4 rot3d4 id rd4 sr2d4 sr3d4 sd4 srd4)
  2546. (rot3d4 rot3d4 id rd4 rot2d4 srd4 sr2d4 sr3d4 sd4)
  2547. (sd4 sd4 srd4 sr2d4 sr3d4 id rd4 rot2d4 rot3d4)
  2548. (srd4 srd4 sr2d4 sr3d4 sd4 rot3d4 id rd4 rot2d4)
  2549. (sr2d4 sr2d4 sr3d4 sd4 srd4 rot2d4 rot3d4 id rd4)
  2550. (sr3d4 sr3d4 sd4 srd4 sr2d4 rd4 rot2d4 rot3d4 id)))$
  2551. set!*inverse('d4,
  2552. '((id rd4 rot2d4 rot3d4 sd4 srd4 sr2d4 sr3d4)
  2553. (id rot3d4 rot2d4 rd4 sd4 srd4 sr2d4 sr3d4)))$
  2554. set!*elemasgen('d4,
  2555. '(((rd4) (rd4))
  2556. ((rot2d4) (rd4 rd4))
  2557. ((rot3d4) (rd4 rd4 rd4))
  2558. ((sd4) (sd4))
  2559. ((srd4) (sd4 rd4))
  2560. ((sr2d4) (sd4 rd4 rd4))
  2561. ((sr3d4) (sd4 rd4 rd4 rd4))))$
  2562. set!*group('d4,'((id) (rd4 rot3d4) (rot2d4) (sd4 sr2d4) (sr3d4 srd4)))$
  2563. set!*representation('d4,
  2564. '((id (((1 . 1))))
  2565. (rd4 (((1 . 1))))
  2566. (rot2d4 (((1 . 1))))
  2567. (rot3d4 (((1 . 1))))
  2568. (sd4 (((1 . 1))))
  2569. (srd4 (((1 . 1))))
  2570. (sr2d4 (((1 . 1))))
  2571. (sr3d4 (((1 . 1))))),'complex)$
  2572. set!*representation('d4,
  2573. '((id (((1 . 1))))
  2574. (rd4 (((1 . 1))))
  2575. (rot2d4 (((1 . 1))))
  2576. (rot3d4 (((1 . 1))))
  2577. (sd4 (((-1 . 1))))
  2578. (srd4 (((-1 . 1))))
  2579. (sr2d4 (((-1 . 1))))
  2580. (sr3d4 (((-1 . 1))))),'complex)$
  2581. set!*representation('d4,
  2582. '((id (((1 . 1))))
  2583. (rd4 (((-1 . 1))))
  2584. (rot2d4 (((1 . 1))))
  2585. (rot3d4 (((-1 . 1))))
  2586. (sd4 (((1 . 1))))
  2587. (srd4 (((-1 . 1))))
  2588. (sr2d4 (((1 . 1))))
  2589. (sr3d4 (((-1 . 1))))),'complex)$
  2590. set!*representation('d4,
  2591. '((id (((1 . 1))))
  2592. (rd4 (((-1 . 1))))
  2593. (rot2d4 (((1 . 1))))
  2594. (rot3d4 (((-1 . 1))))
  2595. (sd4 (((-1 . 1))))
  2596. (srd4 (((1 . 1))))
  2597. (sr2d4 (((-1 . 1))))
  2598. (sr3d4 (((1 . 1))))),'complex)$
  2599. set!*representation('d4,
  2600. '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2601. (rd4 (((nil . 1) (1 . 1)) ((-1 . 1) (nil . 1))))
  2602. (rot2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2603. (rot3d4 (((nil . 1) (-1 . 1)) ((1 . 1) (nil . 1))))
  2604. (sd4 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2605. (srd4 (((nil . 1) (1 . 1)) ((1 . 1) (nil . 1))))
  2606. (sr2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2607. (sr3d4 (((nil . 1) (-1 . 1)) ((-1 . 1) (nil . 1))))),
  2608. 'complex)$
  2609. set!*representation('d4,
  2610. '(realtype
  2611. (id (((1 . 1))))
  2612. (rd4 (((1 . 1))))
  2613. (rot2d4 (((1 . 1))))
  2614. (rot3d4 (((1 . 1))))
  2615. (sd4 (((1 . 1))))
  2616. (srd4 (((1 . 1))))
  2617. (sr2d4 (((1 . 1))))
  2618. (sr3d4 (((1 . 1))))),'real)$
  2619. set!*representation('d4,
  2620. '(realtype
  2621. (id (((1 . 1))))
  2622. (rd4 (((1 . 1))))
  2623. (rot2d4 (((1 . 1))))
  2624. (rot3d4 (((1 . 1))))
  2625. (sd4 (((-1 . 1))))
  2626. (srd4 (((-1 . 1))))
  2627. (sr2d4 (((-1 . 1))))
  2628. (sr3d4 (((-1 . 1))))),'real)$
  2629. set!*representation('d4,
  2630. '(realtype
  2631. (id (((1 . 1))))
  2632. (rd4 (((-1 . 1))))
  2633. (rot2d4 (((1 . 1))))
  2634. (rot3d4 (((-1 . 1))))
  2635. (sd4 (((1 . 1))))
  2636. (srd4 (((-1 . 1))))
  2637. (sr2d4 (((1 . 1))))
  2638. (sr3d4 (((-1 . 1))))),'real)$
  2639. set!*representation('d4,
  2640. '(realtype
  2641. (id (((1 . 1))))
  2642. (rd4 (((-1 . 1))))
  2643. (rot2d4 (((1 . 1))))
  2644. (rot3d4 (((-1 . 1))))
  2645. (sd4 (((-1 . 1))))
  2646. (srd4 (((1 . 1))))
  2647. (sr2d4 (((-1 . 1))))
  2648. (sr3d4 (((1 . 1))))),'real)$
  2649. set!*representation('d4,
  2650. '(realtype
  2651. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2652. (rd4 (((nil . 1) (1 . 1)) ((-1 . 1) (nil . 1))))
  2653. (rot2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2654. (rot3d4 (((nil . 1) (-1 . 1)) ((1 . 1) (nil . 1))))
  2655. (sd4 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2656. (srd4 (((nil . 1) (1 . 1)) ((1 . 1) (nil . 1))))
  2657. (sr2d4 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2658. (sr3d4 (((nil . 1) (-1 . 1)) ((-1 . 1) (nil . 1))))),
  2659. 'real)$
  2660. set!*available 'd4$
  2661. set!*elems!*group('d5,
  2662. '(id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5))$
  2663. set!*generators('d5,'(rd5 sd5))$
  2664. set!*relations('d5,
  2665. '(((sd5 sd5) (id))
  2666. ((rd5 rd5 rd5 rd5 rd5) (id))
  2667. ((sd5 rd5 sd5) (rd5 rd5 rd5 rd5))))$
  2668. set!*grouptable('d5,
  2669. '((grouptable id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5)
  2670. (id id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5)
  2671. (rd5 rd5 r2d5 r3d5 r4d5 id sr4d5 sd5 srd5 sr2d5 sr3d5)
  2672. (r2d5 r2d5 r3d5 r4d5 id rd5 sr3d5 sr4d5 sd5 srd5 sr2d5)
  2673. (r3d5 r3d5 r4d5 id rd5 r2d5 sr2d5 sr3d5 sr4d5 sd5 srd5)
  2674. (r4d5 r4d5 id rd5 r2d5 r3d5 srd5 sr2d5 sr3d5 sr4d5 sd5)
  2675. (sd5 sd5 srd5 sr2d5 sr3d5 sr4d5 id rd5 r2d5 r3d5 r4d5)
  2676. (srd5 srd5 sr2d5 sr3d5 sr4d5 sd5 r4d5 id rd5 r2d5 r3d5)
  2677. (sr2d5 sr2d5 sr3d5 sr4d5 sd5 srd5 r3d5 r4d5 id rd5 r2d5)
  2678. (sr3d5 sr3d5 sr4d5 sd5 srd5 sr2d5 r2d5 r3d5 r4d5 id rd5)
  2679. (sr4d5 sr4d5 sd5 srd5 sr2d5 sr3d5 rd5 r2d5 r3d5 r4d5 id)))$
  2680. set!*inverse('d5,
  2681. '((id rd5 r2d5 r3d5 r4d5 sd5 srd5 sr2d5 sr3d5 sr4d5)
  2682. (id r4d5 r3d5 r2d5 rd5 sd5 srd5 sr2d5 sr3d5 sr4d5)))$
  2683. set!*elemasgen('d5,
  2684. '(((rd5) (rd5))
  2685. ((r2d5) (rd5 rd5))
  2686. ((r3d5) (rd5 rd5 rd5))
  2687. ((r4d5) (rd5 rd5 rd5 rd5))
  2688. ((sd5) (sd5))
  2689. ((srd5) (sd5 rd5))
  2690. ((sr2d5) (sd5 rd5 rd5))
  2691. ((sr3d5) (sd5 rd5 rd5 rd5))
  2692. ((sr4d5) (sd5 rd5 rd5 rd5 rd5))))$
  2693. set!*group('d5,
  2694. '((id) (rd5 r4d5) (r2d5 r3d5) (srd5 sr2d5 sd5 sr4d5 sr3d5)))$
  2695. set!*representation('d5,
  2696. '((id (((1 . 1))))
  2697. (rd5 (((1 . 1))))
  2698. (r2d5 (((1 . 1))))
  2699. (r3d5 (((1 . 1))))
  2700. (r4d5 (((1 . 1))))
  2701. (sd5 (((1 . 1))))
  2702. (srd5 (((1 . 1))))
  2703. (sr2d5 (((1 . 1))))
  2704. (sr3d5 (((1 . 1))))
  2705. (sr4d5 (((1 . 1))))),'complex)$
  2706. set!*representation('d5,
  2707. '((id (((1 . 1))))
  2708. (rd5 (((1 . 1))))
  2709. (r2d5 (((1 . 1))))
  2710. (r3d5 (((1 . 1))))
  2711. (r4d5 (((1 . 1))))
  2712. (sd5 (((-1 . 1))))
  2713. (srd5 (((-1 . 1))))
  2714. (sr2d5 (((-1 . 1))))
  2715. (sr3d5 (((-1 . 1))))
  2716. (sr4d5 (((-1 . 1))))),'complex)$
  2717. set!*representation('d5,
  2718. '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2719. (rd5
  2720. (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  2721. (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
  2722. ((((((sin (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  2723. (((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1))))
  2724. (r2d5
  2725. (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  2726. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  2727. . 1)
  2728. (((((sin (quotient (times 2 pi) 5)) . 1)
  2729. (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
  2730. . 1))
  2731. ((((((sin (quotient (times 2 pi) 5)) . 1)
  2732. (((cos (quotient (times 2 pi) 5)) . 1) . 2)))
  2733. . 1)
  2734. (((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  2735. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  2736. . 1))))
  2737. (r3d5
  2738. (((((((sin (quotient (times 2 pi) 5)) . 2)
  2739. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  2740. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  2741. . 1)
  2742. (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
  2743. (((sin (quotient (times 2 pi) 5)) . 1)
  2744. (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
  2745. . 1))
  2746. ((((((sin (quotient (times 2 pi) 5)) . 3) . -1)
  2747. (((sin (quotient (times 2 pi) 5)) . 1)
  2748. (((cos (quotient (times 2 pi) 5)) . 2) . 3)))
  2749. . 1)
  2750. (((((sin (quotient (times 2 pi) 5)) . 2)
  2751. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  2752. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  2753. . 1))))
  2754. (r4d5
  2755. (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  2756. (((sin (quotient (times 2 pi) 5)) . 2)
  2757. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  2758. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  2759. . 1)
  2760. (((((sin (quotient (times 2 pi) 5)) . 3)
  2761. (((cos (quotient (times 2 pi) 5)) . 1) . 4))
  2762. (((sin (quotient (times 2 pi) 5)) . 1)
  2763. (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
  2764. . 1))
  2765. ((((((sin (quotient (times 2 pi) 5)) . 3)
  2766. (((cos (quotient (times 2 pi) 5)) . 1) . -4))
  2767. (((sin (quotient (times 2 pi) 5)) . 1)
  2768. (((cos (quotient (times 2 pi) 5)) . 3) . 4)))
  2769. . 1)
  2770. (((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  2771. (((sin (quotient (times 2 pi) 5)) . 2)
  2772. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  2773. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  2774. . 1))))
  2775. (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2776. (srd5
  2777. (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  2778. (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
  2779. ((((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1)
  2780. (((((cos (quotient (times 2 pi) 5)) . 1) . -1)) . 1))))
  2781. (sr2d5
  2782. (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  2783. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  2784. . 1)
  2785. (((((sin (quotient (times 2 pi) 5)) . 1)
  2786. (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
  2787. . 1))
  2788. ((((((sin (quotient (times 2 pi) 5)) . 1)
  2789. (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
  2790. . 1)
  2791. (((((sin (quotient (times 2 pi) 5)) . 2) . 1)
  2792. (((cos (quotient (times 2 pi) 5)) . 2) . -1))
  2793. . 1))))
  2794. (sr3d5
  2795. (((((((sin (quotient (times 2 pi) 5)) . 2)
  2796. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  2797. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  2798. . 1)
  2799. (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
  2800. (((sin (quotient (times 2 pi) 5)) . 1)
  2801. (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
  2802. . 1))
  2803. ((((((sin (quotient (times 2 pi) 5)) . 3) . 1)
  2804. (((sin (quotient (times 2 pi) 5)) . 1)
  2805. (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
  2806. . 1)
  2807. (((((sin (quotient (times 2 pi) 5)) . 2)
  2808. (((cos (quotient (times 2 pi) 5)) . 1) . 3))
  2809. (((cos (quotient (times 2 pi) 5)) . 3) . -1))
  2810. . 1))))
  2811. (sr4d5
  2812. (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  2813. (((sin (quotient (times 2 pi) 5)) . 2)
  2814. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  2815. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  2816. . 1)
  2817. (((((sin (quotient (times 2 pi) 5)) . 3)
  2818. (((cos (quotient (times 2 pi) 5)) . 1) . 4))
  2819. (((sin (quotient (times 2 pi) 5)) . 1)
  2820. (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
  2821. . 1))
  2822. ((((((sin (quotient (times 2 pi) 5)) . 3)
  2823. (((cos (quotient (times 2 pi) 5)) . 1) . 4))
  2824. (((sin (quotient (times 2 pi) 5)) . 1)
  2825. (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
  2826. . 1)
  2827. (((((sin (quotient (times 2 pi) 5)) . 4) . -1)
  2828. (((sin (quotient (times 2 pi) 5)) . 2)
  2829. (((cos (quotient (times 2 pi) 5)) . 2) . 6))
  2830. (((cos (quotient (times 2 pi) 5)) . 4) . -1))
  2831. . 1))))),'complex)$
  2832. set!*representation('d5,
  2833. '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2834. (rd5
  2835. (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  2836. (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
  2837. ((((((sin (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  2838. (((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1))))
  2839. (r2d5
  2840. (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  2841. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  2842. . 1)
  2843. (((((sin (quotient (times 4 pi) 5)) . 1)
  2844. (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
  2845. . 1))
  2846. ((((((sin (quotient (times 4 pi) 5)) . 1)
  2847. (((cos (quotient (times 4 pi) 5)) . 1) . 2)))
  2848. . 1)
  2849. (((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  2850. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  2851. . 1))))
  2852. (r3d5
  2853. (((((((sin (quotient (times 4 pi) 5)) . 2)
  2854. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  2855. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  2856. . 1)
  2857. (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
  2858. (((sin (quotient (times 4 pi) 5)) . 1)
  2859. (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
  2860. . 1))
  2861. ((((((sin (quotient (times 4 pi) 5)) . 3) . -1)
  2862. (((sin (quotient (times 4 pi) 5)) . 1)
  2863. (((cos (quotient (times 4 pi) 5)) . 2) . 3)))
  2864. . 1)
  2865. (((((sin (quotient (times 4 pi) 5)) . 2)
  2866. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  2867. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  2868. . 1))))
  2869. (r4d5
  2870. (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  2871. (((sin (quotient (times 4 pi) 5)) . 2)
  2872. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  2873. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  2874. . 1)
  2875. (((((sin (quotient (times 4 pi) 5)) . 3)
  2876. (((cos (quotient (times 4 pi) 5)) . 1) . 4))
  2877. (((sin (quotient (times 4 pi) 5)) . 1)
  2878. (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
  2879. . 1))
  2880. ((((((sin (quotient (times 4 pi) 5)) . 3)
  2881. (((cos (quotient (times 4 pi) 5)) . 1) . -4))
  2882. (((sin (quotient (times 4 pi) 5)) . 1)
  2883. (((cos (quotient (times 4 pi) 5)) . 3) . 4)))
  2884. . 1)
  2885. (((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  2886. (((sin (quotient (times 4 pi) 5)) . 2)
  2887. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  2888. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  2889. . 1))))
  2890. (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  2891. (srd5
  2892. (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  2893. (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
  2894. ((((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1)
  2895. (((((cos (quotient (times 4 pi) 5)) . 1) . -1)) . 1))))
  2896. (sr2d5
  2897. (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  2898. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  2899. . 1)
  2900. (((((sin (quotient (times 4 pi) 5)) . 1)
  2901. (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
  2902. . 1))
  2903. ((((((sin (quotient (times 4 pi) 5)) . 1)
  2904. (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
  2905. . 1)
  2906. (((((sin (quotient (times 4 pi) 5)) . 2) . 1)
  2907. (((cos (quotient (times 4 pi) 5)) . 2) . -1))
  2908. . 1))))
  2909. (sr3d5
  2910. (((((((sin (quotient (times 4 pi) 5)) . 2)
  2911. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  2912. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  2913. . 1)
  2914. (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
  2915. (((sin (quotient (times 4 pi) 5)) . 1)
  2916. (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
  2917. . 1))
  2918. ((((((sin (quotient (times 4 pi) 5)) . 3) . 1)
  2919. (((sin (quotient (times 4 pi) 5)) . 1)
  2920. (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
  2921. . 1)
  2922. (((((sin (quotient (times 4 pi) 5)) . 2)
  2923. (((cos (quotient (times 4 pi) 5)) . 1) . 3))
  2924. (((cos (quotient (times 4 pi) 5)) . 3) . -1))
  2925. . 1))))
  2926. (sr4d5
  2927. (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  2928. (((sin (quotient (times 4 pi) 5)) . 2)
  2929. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  2930. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  2931. . 1)
  2932. (((((sin (quotient (times 4 pi) 5)) . 3)
  2933. (((cos (quotient (times 4 pi) 5)) . 1) . 4))
  2934. (((sin (quotient (times 4 pi) 5)) . 1)
  2935. (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
  2936. . 1))
  2937. ((((((sin (quotient (times 4 pi) 5)) . 3)
  2938. (((cos (quotient (times 4 pi) 5)) . 1) . 4))
  2939. (((sin (quotient (times 4 pi) 5)) . 1)
  2940. (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
  2941. . 1)
  2942. (((((sin (quotient (times 4 pi) 5)) . 4) . -1)
  2943. (((sin (quotient (times 4 pi) 5)) . 2)
  2944. (((cos (quotient (times 4 pi) 5)) . 2) . 6))
  2945. (((cos (quotient (times 4 pi) 5)) . 4) . -1))
  2946. . 1))))),'complex)$
  2947. set!*representation('d5,
  2948. '(realtype
  2949. (id (((1 . 1))))
  2950. (rd5 (((1 . 1))))
  2951. (r2d5 (((1 . 1))))
  2952. (r3d5 (((1 . 1))))
  2953. (r4d5 (((1 . 1))))
  2954. (sd5 (((1 . 1))))
  2955. (srd5 (((1 . 1))))
  2956. (sr2d5 (((1 . 1))))
  2957. (sr3d5 (((1 . 1))))
  2958. (sr4d5 (((1 . 1))))),'real)$
  2959. set!*representation('d5,
  2960. '(realtype
  2961. (id (((1 . 1))))
  2962. (rd5 (((1 . 1))))
  2963. (r2d5 (((1 . 1))))
  2964. (r3d5 (((1 . 1))))
  2965. (r4d5 (((1 . 1))))
  2966. (sd5 (((-1 . 1))))
  2967. (srd5 (((-1 . 1))))
  2968. (sr2d5 (((-1 . 1))))
  2969. (sr3d5 (((-1 . 1))))
  2970. (sr4d5 (((-1 . 1))))),'real)$
  2971. set!*representation('d5,
  2972. '(realtype
  2973. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  2974. (rd5
  2975. (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  2976. (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
  2977. ((((((sin (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  2978. (((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1))))
  2979. (r2d5
  2980. (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  2981. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  2982. . 1)
  2983. (((((sin (quotient (times 2 pi) 5)) . 1)
  2984. (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
  2985. . 1))
  2986. ((((((sin (quotient (times 2 pi) 5)) . 1)
  2987. (((cos (quotient (times 2 pi) 5)) . 1) . 2)))
  2988. . 1)
  2989. (((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  2990. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  2991. . 1))))
  2992. (r3d5
  2993. (((((((sin (quotient (times 2 pi) 5)) . 2)
  2994. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  2995. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  2996. . 1)
  2997. (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
  2998. (((sin (quotient (times 2 pi) 5)) . 1)
  2999. (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
  3000. . 1))
  3001. ((((((sin (quotient (times 2 pi) 5)) . 3) . -1)
  3002. (((sin (quotient (times 2 pi) 5)) . 1)
  3003. (((cos (quotient (times 2 pi) 5)) . 2) . 3)))
  3004. . 1)
  3005. (((((sin (quotient (times 2 pi) 5)) . 2)
  3006. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  3007. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  3008. . 1))))
  3009. (r4d5
  3010. (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  3011. (((sin (quotient (times 2 pi) 5)) . 2)
  3012. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  3013. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  3014. . 1)
  3015. (((((sin (quotient (times 2 pi) 5)) . 3)
  3016. (((cos (quotient (times 2 pi) 5)) . 1) . 4))
  3017. (((sin (quotient (times 2 pi) 5)) . 1)
  3018. (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
  3019. . 1))
  3020. ((((((sin (quotient (times 2 pi) 5)) . 3)
  3021. (((cos (quotient (times 2 pi) 5)) . 1) . -4))
  3022. (((sin (quotient (times 2 pi) 5)) . 1)
  3023. (((cos (quotient (times 2 pi) 5)) . 3) . 4)))
  3024. . 1)
  3025. (((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  3026. (((sin (quotient (times 2 pi) 5)) . 2)
  3027. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  3028. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  3029. . 1))))
  3030. (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3031. (srd5
  3032. (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  3033. (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
  3034. ((((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1)
  3035. (((((cos (quotient (times 2 pi) 5)) . 1) . -1)) . 1))))
  3036. (sr2d5
  3037. (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  3038. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  3039. . 1)
  3040. (((((sin (quotient (times 2 pi) 5)) . 1)
  3041. (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
  3042. . 1))
  3043. ((((((sin (quotient (times 2 pi) 5)) . 1)
  3044. (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
  3045. . 1)
  3046. (((((sin (quotient (times 2 pi) 5)) . 2) . 1)
  3047. (((cos (quotient (times 2 pi) 5)) . 2) . -1))
  3048. . 1))))
  3049. (sr3d5
  3050. (((((((sin (quotient (times 2 pi) 5)) . 2)
  3051. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  3052. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  3053. . 1)
  3054. (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
  3055. (((sin (quotient (times 2 pi) 5)) . 1)
  3056. (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
  3057. . 1))
  3058. ((((((sin (quotient (times 2 pi) 5)) . 3) . 1)
  3059. (((sin (quotient (times 2 pi) 5)) . 1)
  3060. (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
  3061. . 1)
  3062. (((((sin (quotient (times 2 pi) 5)) . 2)
  3063. (((cos (quotient (times 2 pi) 5)) . 1) . 3))
  3064. (((cos (quotient (times 2 pi) 5)) . 3) . -1))
  3065. . 1))))
  3066. (sr4d5
  3067. (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  3068. (((sin (quotient (times 2 pi) 5)) . 2)
  3069. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  3070. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  3071. . 1)
  3072. (((((sin (quotient (times 2 pi) 5)) . 3)
  3073. (((cos (quotient (times 2 pi) 5)) . 1) . 4))
  3074. (((sin (quotient (times 2 pi) 5)) . 1)
  3075. (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
  3076. . 1))
  3077. ((((((sin (quotient (times 2 pi) 5)) . 3)
  3078. (((cos (quotient (times 2 pi) 5)) . 1) . 4))
  3079. (((sin (quotient (times 2 pi) 5)) . 1)
  3080. (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
  3081. . 1)
  3082. (((((sin (quotient (times 2 pi) 5)) . 4) . -1)
  3083. (((sin (quotient (times 2 pi) 5)) . 2)
  3084. (((cos (quotient (times 2 pi) 5)) . 2) . 6))
  3085. (((cos (quotient (times 2 pi) 5)) . 4) . -1))
  3086. . 1))))),'real)$
  3087. set!*representation('d5,
  3088. '(realtype
  3089. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3090. (rd5
  3091. (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  3092. (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
  3093. ((((((sin (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  3094. (((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1))))
  3095. (r2d5
  3096. (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  3097. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  3098. . 1)
  3099. (((((sin (quotient (times 4 pi) 5)) . 1)
  3100. (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
  3101. . 1))
  3102. ((((((sin (quotient (times 4 pi) 5)) . 1)
  3103. (((cos (quotient (times 4 pi) 5)) . 1) . 2)))
  3104. . 1)
  3105. (((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  3106. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  3107. . 1))))
  3108. (r3d5
  3109. (((((((sin (quotient (times 4 pi) 5)) . 2)
  3110. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  3111. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  3112. . 1)
  3113. (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
  3114. (((sin (quotient (times 4 pi) 5)) . 1)
  3115. (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
  3116. . 1))
  3117. ((((((sin (quotient (times 4 pi) 5)) . 3) . -1)
  3118. (((sin (quotient (times 4 pi) 5)) . 1)
  3119. (((cos (quotient (times 4 pi) 5)) . 2) . 3)))
  3120. . 1)
  3121. (((((sin (quotient (times 4 pi) 5)) . 2)
  3122. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  3123. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  3124. . 1))))
  3125. (r4d5
  3126. (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  3127. (((sin (quotient (times 4 pi) 5)) . 2)
  3128. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  3129. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  3130. . 1)
  3131. (((((sin (quotient (times 4 pi) 5)) . 3)
  3132. (((cos (quotient (times 4 pi) 5)) . 1) . 4))
  3133. (((sin (quotient (times 4 pi) 5)) . 1)
  3134. (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
  3135. . 1))
  3136. ((((((sin (quotient (times 4 pi) 5)) . 3)
  3137. (((cos (quotient (times 4 pi) 5)) . 1) . -4))
  3138. (((sin (quotient (times 4 pi) 5)) . 1)
  3139. (((cos (quotient (times 4 pi) 5)) . 3) . 4)))
  3140. . 1)
  3141. (((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  3142. (((sin (quotient (times 4 pi) 5)) . 2)
  3143. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  3144. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  3145. . 1))))
  3146. (sd5 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3147. (srd5
  3148. (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  3149. (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
  3150. ((((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1)
  3151. (((((cos (quotient (times 4 pi) 5)) . 1) . -1)) . 1))))
  3152. (sr2d5
  3153. (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  3154. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  3155. . 1)
  3156. (((((sin (quotient (times 4 pi) 5)) . 1)
  3157. (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
  3158. . 1))
  3159. ((((((sin (quotient (times 4 pi) 5)) . 1)
  3160. (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
  3161. . 1)
  3162. (((((sin (quotient (times 4 pi) 5)) . 2) . 1)
  3163. (((cos (quotient (times 4 pi) 5)) . 2) . -1))
  3164. . 1))))
  3165. (sr3d5
  3166. (((((((sin (quotient (times 4 pi) 5)) . 2)
  3167. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  3168. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  3169. . 1)
  3170. (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
  3171. (((sin (quotient (times 4 pi) 5)) . 1)
  3172. (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
  3173. . 1))
  3174. ((((((sin (quotient (times 4 pi) 5)) . 3) . 1)
  3175. (((sin (quotient (times 4 pi) 5)) . 1)
  3176. (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
  3177. . 1)
  3178. (((((sin (quotient (times 4 pi) 5)) . 2)
  3179. (((cos (quotient (times 4 pi) 5)) . 1) . 3))
  3180. (((cos (quotient (times 4 pi) 5)) . 3) . -1))
  3181. . 1))))
  3182. (sr4d5
  3183. (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  3184. (((sin (quotient (times 4 pi) 5)) . 2)
  3185. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  3186. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  3187. . 1)
  3188. (((((sin (quotient (times 4 pi) 5)) . 3)
  3189. (((cos (quotient (times 4 pi) 5)) . 1) . 4))
  3190. (((sin (quotient (times 4 pi) 5)) . 1)
  3191. (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
  3192. . 1))
  3193. ((((((sin (quotient (times 4 pi) 5)) . 3)
  3194. (((cos (quotient (times 4 pi) 5)) . 1) . 4))
  3195. (((sin (quotient (times 4 pi) 5)) . 1)
  3196. (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
  3197. . 1)
  3198. (((((sin (quotient (times 4 pi) 5)) . 4) . -1)
  3199. (((sin (quotient (times 4 pi) 5)) . 2)
  3200. (((cos (quotient (times 4 pi) 5)) . 2) . 6))
  3201. (((cos (quotient (times 4 pi) 5)) . 4) . -1))
  3202. . 1))))),'real)$
  3203. set!*available 'd5$
  3204. set!*elems!*group('d6,
  3205. '(id
  3206. rd6
  3207. r2d6
  3208. r3d6
  3209. r4d6
  3210. r5d6
  3211. sd6
  3212. srd6
  3213. sr2d6
  3214. sr3d6
  3215. sr4d6
  3216. sr5d6))$
  3217. set!*generators('d6,'(rd6 sd6))$
  3218. set!*relations('d6,
  3219. '(((sd6 sd6) (id))
  3220. ((rd6 rd6 rd6 rd6 rd6 rd6) (id))
  3221. ((sd6 rd6 sd6) (rd6 rd6 rd6 rd6 rd6))))$
  3222. set!*grouptable('d6,
  3223. '((grouptable
  3224. id
  3225. rd6
  3226. r2d6
  3227. r3d6
  3228. r4d6
  3229. r5d6
  3230. sd6
  3231. srd6
  3232. sr2d6
  3233. sr3d6
  3234. sr4d6
  3235. sr5d6)
  3236. (id
  3237. id
  3238. rd6
  3239. r2d6
  3240. r3d6
  3241. r4d6
  3242. r5d6
  3243. sd6
  3244. srd6
  3245. sr2d6
  3246. sr3d6
  3247. sr4d6
  3248. sr5d6)
  3249. (rd6
  3250. rd6
  3251. r2d6
  3252. r3d6
  3253. r4d6
  3254. r5d6
  3255. id
  3256. sr5d6
  3257. sd6
  3258. srd6
  3259. sr2d6
  3260. sr3d6
  3261. sr4d6)
  3262. (r2d6
  3263. r2d6
  3264. r3d6
  3265. r4d6
  3266. r5d6
  3267. id
  3268. rd6
  3269. sr4d6
  3270. sr5d6
  3271. sd6
  3272. srd6
  3273. sr2d6
  3274. sr3d6)
  3275. (r3d6
  3276. r3d6
  3277. r4d6
  3278. r5d6
  3279. id
  3280. rd6
  3281. r2d6
  3282. sr3d6
  3283. sr4d6
  3284. sr5d6
  3285. sd6
  3286. srd6
  3287. sr2d6)
  3288. (r4d6
  3289. r4d6
  3290. r5d6
  3291. id
  3292. rd6
  3293. r2d6
  3294. r3d6
  3295. sr2d6
  3296. sr3d6
  3297. sr4d6
  3298. sr5d6
  3299. sd6
  3300. srd6)
  3301. (r5d6
  3302. r5d6
  3303. id
  3304. rd6
  3305. r2d6
  3306. r3d6
  3307. r4d6
  3308. srd6
  3309. sr2d6
  3310. sr3d6
  3311. sr4d6
  3312. sr5d6
  3313. sd6)
  3314. (sd6
  3315. sd6
  3316. srd6
  3317. sr2d6
  3318. sr3d6
  3319. sr4d6
  3320. sr5d6
  3321. id
  3322. rd6
  3323. r2d6
  3324. r3d6
  3325. r4d6
  3326. r5d6)
  3327. (srd6
  3328. srd6
  3329. sr2d6
  3330. sr3d6
  3331. sr4d6
  3332. sr5d6
  3333. sd6
  3334. r5d6
  3335. id
  3336. rd6
  3337. r2d6
  3338. r3d6
  3339. r4d6)
  3340. (sr2d6
  3341. sr2d6
  3342. sr3d6
  3343. sr4d6
  3344. sr5d6
  3345. sd6
  3346. srd6
  3347. r4d6
  3348. r5d6
  3349. id
  3350. rd6
  3351. r2d6
  3352. r3d6)
  3353. (sr3d6
  3354. sr3d6
  3355. sr4d6
  3356. sr5d6
  3357. sd6
  3358. srd6
  3359. sr2d6
  3360. r3d6
  3361. r4d6
  3362. r5d6
  3363. id
  3364. rd6
  3365. r2d6)
  3366. (sr4d6
  3367. sr4d6
  3368. sr5d6
  3369. sd6
  3370. srd6
  3371. sr2d6
  3372. sr3d6
  3373. r2d6
  3374. r3d6
  3375. r4d6
  3376. r5d6
  3377. id
  3378. rd6)
  3379. (sr5d6
  3380. sr5d6
  3381. sd6
  3382. srd6
  3383. sr2d6
  3384. sr3d6
  3385. sr4d6
  3386. rd6
  3387. r2d6
  3388. r3d6
  3389. r4d6
  3390. r5d6
  3391. id)))$
  3392. set!*inverse('d6,
  3393. '((id rd6 r2d6 r3d6 r4d6 r5d6 sd6 srd6 sr2d6 sr3d6 sr4d6 sr5d6)
  3394. (id r5d6 r4d6 r3d6 r2d6 rd6 sd6 srd6 sr2d6 sr3d6 sr4d6 sr5d6)))$
  3395. set!*elemasgen('d6,
  3396. '(((rd6) (rd6))
  3397. ((r2d6) (rd6 rd6))
  3398. ((r3d6) (rd6 rd6 rd6))
  3399. ((r4d6) (rd6 rd6 rd6 rd6))
  3400. ((r5d6) (rd6 rd6 rd6 rd6 rd6))
  3401. ((sd6) (sd6))
  3402. ((srd6) (sd6 rd6))
  3403. ((sr2d6) (sd6 rd6 rd6))
  3404. ((sr3d6) (sd6 rd6 rd6 rd6))
  3405. ((sr4d6) (sd6 rd6 rd6 rd6 rd6))
  3406. ((sr5d6) (sd6 rd6 rd6 rd6 rd6 rd6))))$
  3407. set!*group('d6,
  3408. '((id)
  3409. (rd6 r5d6)
  3410. (r2d6 r4d6)
  3411. (r3d6)
  3412. (sr2d6 sd6 sr4d6)
  3413. (srd6 sr5d6 sr3d6)))$
  3414. set!*representation('d6,
  3415. '((id (((1 . 1))))
  3416. (rd6 (((1 . 1))))
  3417. (r2d6 (((1 . 1))))
  3418. (r3d6 (((1 . 1))))
  3419. (r4d6 (((1 . 1))))
  3420. (r5d6 (((1 . 1))))
  3421. (sd6 (((1 . 1))))
  3422. (srd6 (((1 . 1))))
  3423. (sr2d6 (((1 . 1))))
  3424. (sr3d6 (((1 . 1))))
  3425. (sr4d6 (((1 . 1))))
  3426. (sr5d6 (((1 . 1))))),'complex)$
  3427. set!*representation('d6,
  3428. '((id (((1 . 1))))
  3429. (rd6 (((1 . 1))))
  3430. (r2d6 (((1 . 1))))
  3431. (r3d6 (((1 . 1))))
  3432. (r4d6 (((1 . 1))))
  3433. (r5d6 (((1 . 1))))
  3434. (sd6 (((-1 . 1))))
  3435. (srd6 (((-1 . 1))))
  3436. (sr2d6 (((-1 . 1))))
  3437. (sr3d6 (((-1 . 1))))
  3438. (sr4d6 (((-1 . 1))))
  3439. (sr5d6 (((-1 . 1))))),'complex)$
  3440. set!*representation('d6,
  3441. '((id (((1 . 1))))
  3442. (rd6 (((-1 . 1))))
  3443. (r2d6 (((1 . 1))))
  3444. (r3d6 (((-1 . 1))))
  3445. (r4d6 (((1 . 1))))
  3446. (r5d6 (((-1 . 1))))
  3447. (sd6 (((1 . 1))))
  3448. (srd6 (((-1 . 1))))
  3449. (sr2d6 (((1 . 1))))
  3450. (sr3d6 (((-1 . 1))))
  3451. (sr4d6 (((1 . 1))))
  3452. (sr5d6 (((-1 . 1))))),'complex)$
  3453. set!*representation('d6,
  3454. '((id (((1 . 1))))
  3455. (rd6 (((-1 . 1))))
  3456. (r2d6 (((1 . 1))))
  3457. (r3d6 (((-1 . 1))))
  3458. (r4d6 (((1 . 1))))
  3459. (r5d6 (((-1 . 1))))
  3460. (sd6 (((-1 . 1))))
  3461. (srd6 (((1 . 1))))
  3462. (sr2d6 (((-1 . 1))))
  3463. (sr3d6 (((1 . 1))))
  3464. (sr4d6 (((-1 . 1))))
  3465. (sr5d6 (((1 . 1))))),'complex)$
  3466. set!*representation('d6,
  3467. '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3468. (rd6
  3469. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3470. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
  3471. (r2d6
  3472. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3473. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3474. (-1 . 2))))
  3475. (r3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3476. (r4d6
  3477. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3478. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3479. (r5d6
  3480. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3481. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3482. (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3483. (srd6
  3484. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3485. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3486. (sr2d6
  3487. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3488. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3489. (sr3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3490. (sr4d6
  3491. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3492. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
  3493. (sr5d6
  3494. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3495. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3496. (-1 . 2))))),'complex)$
  3497. set!*representation('d6,
  3498. '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3499. (rd6
  3500. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3501. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3502. (-1 . 2))))
  3503. (r2d6
  3504. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3505. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3506. (r3d6 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3507. (r4d6
  3508. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3509. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3510. (-1 . 2))))
  3511. (r5d6
  3512. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3513. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3514. (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3515. (srd6
  3516. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3517. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3518. (sr2d6
  3519. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3520. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
  3521. (sr3d6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3522. (sr4d6
  3523. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3524. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3525. (sr5d6
  3526. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3527. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3528. (1 . 2))))),'complex)$
  3529. set!*representation('d6,
  3530. '(realtype
  3531. (id (((1 . 1))))
  3532. (rd6 (((1 . 1))))
  3533. (r2d6 (((1 . 1))))
  3534. (r3d6 (((1 . 1))))
  3535. (r4d6 (((1 . 1))))
  3536. (r5d6 (((1 . 1))))
  3537. (sd6 (((1 . 1))))
  3538. (srd6 (((1 . 1))))
  3539. (sr2d6 (((1 . 1))))
  3540. (sr3d6 (((1 . 1))))
  3541. (sr4d6 (((1 . 1))))
  3542. (sr5d6 (((1 . 1))))),'real)$
  3543. set!*representation('d6,
  3544. '(realtype
  3545. (id (((1 . 1))))
  3546. (rd6 (((1 . 1))))
  3547. (r2d6 (((1 . 1))))
  3548. (r3d6 (((1 . 1))))
  3549. (r4d6 (((1 . 1))))
  3550. (r5d6 (((1 . 1))))
  3551. (sd6 (((-1 . 1))))
  3552. (srd6 (((-1 . 1))))
  3553. (sr2d6 (((-1 . 1))))
  3554. (sr3d6 (((-1 . 1))))
  3555. (sr4d6 (((-1 . 1))))
  3556. (sr5d6 (((-1 . 1))))),'real)$
  3557. set!*representation('d6,
  3558. '(realtype
  3559. (id (((1 . 1))))
  3560. (rd6 (((-1 . 1))))
  3561. (r2d6 (((1 . 1))))
  3562. (r3d6 (((-1 . 1))))
  3563. (r4d6 (((1 . 1))))
  3564. (r5d6 (((-1 . 1))))
  3565. (sd6 (((1 . 1))))
  3566. (srd6 (((-1 . 1))))
  3567. (sr2d6 (((1 . 1))))
  3568. (sr3d6 (((-1 . 1))))
  3569. (sr4d6 (((1 . 1))))
  3570. (sr5d6 (((-1 . 1))))),'real)$
  3571. set!*representation('d6,
  3572. '(realtype
  3573. (id (((1 . 1))))
  3574. (rd6 (((-1 . 1))))
  3575. (r2d6 (((1 . 1))))
  3576. (r3d6 (((-1 . 1))))
  3577. (r4d6 (((1 . 1))))
  3578. (r5d6 (((-1 . 1))))
  3579. (sd6 (((-1 . 1))))
  3580. (srd6 (((1 . 1))))
  3581. (sr2d6 (((-1 . 1))))
  3582. (sr3d6 (((1 . 1))))
  3583. (sr4d6 (((-1 . 1))))
  3584. (sr5d6 (((1 . 1))))),'real)$
  3585. set!*representation('d6,
  3586. '(realtype
  3587. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3588. (rd6
  3589. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3590. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
  3591. (r2d6
  3592. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3593. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3594. (-1 . 2))))
  3595. (r3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3596. (r4d6
  3597. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3598. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3599. (r5d6
  3600. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3601. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3602. (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3603. (srd6
  3604. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3605. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3606. (sr2d6
  3607. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3608. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3609. (sr3d6 (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3610. (sr4d6
  3611. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3612. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
  3613. (sr5d6
  3614. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3615. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3616. (-1 . 2))))),'real)$
  3617. set!*representation('d6,
  3618. '(realtype
  3619. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3620. (rd6
  3621. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3622. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3623. (-1 . 2))))
  3624. (r2d6
  3625. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3626. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3627. (r3d6 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3628. (r4d6
  3629. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3630. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3631. (-1 . 2))))
  3632. (r5d6
  3633. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3634. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3635. (sd6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3636. (srd6
  3637. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3638. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3639. (sr2d6
  3640. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3641. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2) (1 . 2))))
  3642. (sr3d6 (((1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3643. (sr4d6
  3644. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3645. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  3646. (sr5d6
  3647. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3648. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3649. (1 . 2))))),'real)$
  3650. set!*available 'd6$
  3651. set!*elems!*group('c3,'(id rc3 r2c3))$
  3652. set!*generators('c3,'(rc3))$
  3653. set!*relations('c3,'(((rc3 rc3 rc3) (id))))$
  3654. set!*grouptable('c3,
  3655. '((grouptable id rc3 r2c3)
  3656. (id id rc3 r2c3)
  3657. (rc3 rc3 r2c3 id)
  3658. (r2c3 r2c3 id rc3)))$
  3659. set!*inverse('c3,'((id rc3 r2c3) (id r2c3 rc3)))$
  3660. set!*elemasgen('c3,'(((rc3) (rc3)) ((r2c3) (rc3 rc3))))$
  3661. set!*group('c3,'((id) (rc3) (r2c3)))$
  3662. set!*representation('c3,
  3663. '((id (((1 . 1)))) (rc3 (((1 . 1)))) (r2c3 (((1 . 1))))),
  3664. 'complex)$
  3665. set!*representation('c3,
  3666. '((id (((1 . 1))))
  3667. (rc3
  3668. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  3669. . 2))))
  3670. (r2c3
  3671. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  3672. . 2))))),'complex)$
  3673. set!*representation('c3,
  3674. '((id (((1 . 1))))
  3675. (rc3
  3676. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  3677. . 2))))
  3678. (r2c3
  3679. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  3680. . 2))))),'complex)$
  3681. set!*representation('c3,
  3682. '(realtype
  3683. (id (((1 . 1))))
  3684. (rc3 (((1 . 1))))
  3685. (r2c3 (((1 . 1))))),'real)$
  3686. set!*representation('c3,
  3687. '(complextype
  3688. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3689. (rc3
  3690. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  3691. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  3692. (r2c3
  3693. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  3694. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  3695. (-1 . 2))))),'real)$
  3696. set!*available 'c3$
  3697. set!*elems!*group('c4,'(id rc4 r2c4 r3c4))$
  3698. set!*generators('c4,'(rc4))$
  3699. set!*relations('c4,'(((rc4 rc4 rc4 rc4) (id))))$
  3700. set!*grouptable('c4,
  3701. '((grouptable id rc4 r2c4 r3c4)
  3702. (id id rc4 r2c4 r3c4)
  3703. (rc4 rc4 r2c4 r3c4 id)
  3704. (r2c4 r2c4 r3c4 id rc4)
  3705. (r3c4 r3c4 id rc4 r2c4)))$
  3706. set!*inverse('c4,'((id rc4 r2c4 r3c4) (id r3c4 r2c4 rc4)))$
  3707. set!*elemasgen('c4,
  3708. '(((rc4) (rc4)) ((r2c4) (rc4 rc4)) ((r3c4) (rc4 rc4 rc4))))$
  3709. set!*group('c4,'((id) (rc4) (r2c4) (r3c4)))$
  3710. set!*representation('c4,
  3711. '((id (((1 . 1))))
  3712. (rc4 (((1 . 1))))
  3713. (r2c4 (((1 . 1))))
  3714. (r3c4 (((1 . 1))))),'complex)$
  3715. set!*representation('c4,
  3716. '((id (((1 . 1))))
  3717. (rc4 (((-1 . 1))))
  3718. (r2c4 (((1 . 1))))
  3719. (r3c4 (((-1 . 1))))),'complex)$
  3720. set!*representation('c4,
  3721. '((id (((1 . 1))))
  3722. (rc4 ((((((i . 1) . 1)) . 1))))
  3723. (r2c4 (((-1 . 1))))
  3724. (r3c4 ((((((i . 1) . -1)) . 1))))),'complex)$
  3725. set!*representation('c4,
  3726. '((id (((1 . 1))))
  3727. (rc4 ((((((i . 1) . -1)) . 1))))
  3728. (r2c4 (((-1 . 1))))
  3729. (r3c4 ((((((i . 1) . 1)) . 1))))),'complex)$
  3730. set!*representation('c4,
  3731. '(realtype
  3732. (id (((1 . 1))))
  3733. (rc4 (((1 . 1))))
  3734. (r2c4 (((1 . 1))))
  3735. (r3c4 (((1 . 1))))),'real)$
  3736. set!*representation('c4,
  3737. '(realtype
  3738. (id (((1 . 1))))
  3739. (rc4 (((-1 . 1))))
  3740. (r2c4 (((1 . 1))))
  3741. (r3c4 (((-1 . 1))))),'real)$
  3742. set!*representation('c4,
  3743. '(complextype
  3744. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3745. (rc4 (((nil . 1) (-1 . 1)) ((1 . 1) (nil . 1))))
  3746. (r2c4 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  3747. (r3c4 (((nil . 1) (1 . 1)) ((-1 . 1) (nil . 1))))),'real)$
  3748. set!*available 'c4$
  3749. set!*elems!*group('c5,'(id rc5 r2c5 r3c5 r4c5))$
  3750. set!*generators('c5,'(rc5))$
  3751. set!*relations('c5,'(((rc5 rc5 rc5 rc5 rc5) (id))))$
  3752. set!*grouptable('c5,
  3753. '((grouptable id rc5 r2c5 r3c5 r4c5)
  3754. (id id rc5 r2c5 r3c5 r4c5)
  3755. (rc5 rc5 r2c5 r3c5 r4c5 id)
  3756. (r2c5 r2c5 r3c5 r4c5 id rc5)
  3757. (r3c5 r3c5 r4c5 id rc5 r2c5)
  3758. (r4c5 r4c5 id rc5 r2c5 r3c5)))$
  3759. set!*inverse('c5,'((id rc5 r2c5 r3c5 r4c5) (id r4c5 r3c5 r2c5 rc5)))$
  3760. set!*elemasgen('c5,
  3761. '(((rc5) (rc5))
  3762. ((r2c5) (rc5 rc5))
  3763. ((r3c5) (rc5 rc5 rc5))
  3764. ((r4c5) (rc5 rc5 rc5 rc5))))$
  3765. set!*group('c5,'((id) (rc5) (r2c5) (r3c5) (r4c5)))$
  3766. set!*representation('c5,
  3767. '((id (((1 . 1))))
  3768. (rc5 (((1 . 1))))
  3769. (r2c5 (((1 . 1))))
  3770. (r3c5 (((1 . 1))))
  3771. (r4c5 (((1 . 1))))),'complex)$
  3772. set!*representation('c5,
  3773. '((id (((1 . 1))))
  3774. (rc5
  3775. (((((((sin (quotient (times 2 pi) 5)) . 1) ((i . 1) . 1))
  3776. (((cos (quotient (times 2 pi) 5)) . 1) . 1))
  3777. . 1))))
  3778. (r2c5
  3779. (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  3780. (((sin (quotient (times 2 pi) 5)) . 1)
  3781. (((cos (quotient (times 2 pi) 5)) . 1)
  3782. ((i . 1) . 2)))
  3783. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  3784. . 1))))
  3785. (r3c5
  3786. (((((((sin (quotient (times 2 pi) 5)) . 3)
  3787. ((i . 1) . -1))
  3788. (((sin (quotient (times 2 pi) 5)) . 2)
  3789. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  3790. (((sin (quotient (times 2 pi) 5)) . 1)
  3791. (((cos (quotient (times 2 pi) 5)) . 2)
  3792. ((i . 1) . 3)))
  3793. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  3794. . 1))))
  3795. (r4c5
  3796. (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  3797. (((sin (quotient (times 2 pi) 5)) . 3)
  3798. (((cos (quotient (times 2 pi) 5)) . 1)
  3799. ((i . 1) . -4)))
  3800. (((sin (quotient (times 2 pi) 5)) . 2)
  3801. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  3802. (((sin (quotient (times 2 pi) 5)) . 1)
  3803. (((cos (quotient (times 2 pi) 5)) . 3)
  3804. ((i . 1) . 4)))
  3805. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  3806. . 1))))),'complex)$
  3807. set!*representation('c5,
  3808. '((id (((1 . 1))))
  3809. (rc5
  3810. (((((((sin (quotient (times 4 pi) 5)) . 1) ((i . 1) . 1))
  3811. (((cos (quotient (times 4 pi) 5)) . 1) . 1))
  3812. . 1))))
  3813. (r2c5
  3814. (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  3815. (((sin (quotient (times 4 pi) 5)) . 1)
  3816. (((cos (quotient (times 4 pi) 5)) . 1)
  3817. ((i . 1) . 2)))
  3818. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  3819. . 1))))
  3820. (r3c5
  3821. (((((((sin (quotient (times 4 pi) 5)) . 3)
  3822. ((i . 1) . -1))
  3823. (((sin (quotient (times 4 pi) 5)) . 2)
  3824. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  3825. (((sin (quotient (times 4 pi) 5)) . 1)
  3826. (((cos (quotient (times 4 pi) 5)) . 2)
  3827. ((i . 1) . 3)))
  3828. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  3829. . 1))))
  3830. (r4c5
  3831. (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  3832. (((sin (quotient (times 4 pi) 5)) . 3)
  3833. (((cos (quotient (times 4 pi) 5)) . 1)
  3834. ((i . 1) . -4)))
  3835. (((sin (quotient (times 4 pi) 5)) . 2)
  3836. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  3837. (((sin (quotient (times 4 pi) 5)) . 1)
  3838. (((cos (quotient (times 4 pi) 5)) . 3)
  3839. ((i . 1) . 4)))
  3840. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  3841. . 1))))),'complex)$
  3842. set!*representation('c5,
  3843. '((id (((1 . 1))))
  3844. (rc5
  3845. (((((((sin (quotient (times 4 pi) 5)) . 1)
  3846. ((i . 1) . -1))
  3847. (((cos (quotient (times 4 pi) 5)) . 1) . 1))
  3848. . 1))))
  3849. (r2c5
  3850. (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  3851. (((sin (quotient (times 4 pi) 5)) . 1)
  3852. (((cos (quotient (times 4 pi) 5)) . 1)
  3853. ((i . 1) . -2)))
  3854. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  3855. . 1))))
  3856. (r3c5
  3857. (((((((sin (quotient (times 4 pi) 5)) . 3) ((i . 1) . 1))
  3858. (((sin (quotient (times 4 pi) 5)) . 2)
  3859. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  3860. (((sin (quotient (times 4 pi) 5)) . 1)
  3861. (((cos (quotient (times 4 pi) 5)) . 2)
  3862. ((i . 1) . -3)))
  3863. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  3864. . 1))))
  3865. (r4c5
  3866. (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  3867. (((sin (quotient (times 4 pi) 5)) . 3)
  3868. (((cos (quotient (times 4 pi) 5)) . 1)
  3869. ((i . 1) . 4)))
  3870. (((sin (quotient (times 4 pi) 5)) . 2)
  3871. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  3872. (((sin (quotient (times 4 pi) 5)) . 1)
  3873. (((cos (quotient (times 4 pi) 5)) . 3)
  3874. ((i . 1) . -4)))
  3875. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  3876. . 1))))),'complex)$
  3877. set!*representation('c5,
  3878. '((id (((1 . 1))))
  3879. (rc5
  3880. (((((((sin (quotient (times 2 pi) 5)) . 1)
  3881. ((i . 1) . -1))
  3882. (((cos (quotient (times 2 pi) 5)) . 1) . 1))
  3883. . 1))))
  3884. (r2c5
  3885. (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  3886. (((sin (quotient (times 2 pi) 5)) . 1)
  3887. (((cos (quotient (times 2 pi) 5)) . 1)
  3888. ((i . 1) . -2)))
  3889. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  3890. . 1))))
  3891. (r3c5
  3892. (((((((sin (quotient (times 2 pi) 5)) . 3) ((i . 1) . 1))
  3893. (((sin (quotient (times 2 pi) 5)) . 2)
  3894. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  3895. (((sin (quotient (times 2 pi) 5)) . 1)
  3896. (((cos (quotient (times 2 pi) 5)) . 2)
  3897. ((i . 1) . -3)))
  3898. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  3899. . 1))))
  3900. (r4c5
  3901. (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  3902. (((sin (quotient (times 2 pi) 5)) . 3)
  3903. (((cos (quotient (times 2 pi) 5)) . 1)
  3904. ((i . 1) . 4)))
  3905. (((sin (quotient (times 2 pi) 5)) . 2)
  3906. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  3907. (((sin (quotient (times 2 pi) 5)) . 1)
  3908. (((cos (quotient (times 2 pi) 5)) . 3)
  3909. ((i . 1) . -4)))
  3910. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  3911. . 1))))),'complex)$
  3912. set!*representation('c5,
  3913. '(realtype
  3914. (id (((1 . 1))))
  3915. (rc5 (((1 . 1))))
  3916. (r2c5 (((1 . 1))))
  3917. (r3c5 (((1 . 1))))
  3918. (r4c5 (((1 . 1))))),'real)$
  3919. set!*representation('c5,
  3920. '(complextype
  3921. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3922. (rc5
  3923. (((((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  3924. (((((sin (quotient (times 2 pi) 5)) . 1) . -1)) . 1))
  3925. ((((((sin (quotient (times 2 pi) 5)) . 1) . 1)) . 1)
  3926. (((((cos (quotient (times 2 pi) 5)) . 1) . 1)) . 1))))
  3927. (r2c5
  3928. (((((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  3929. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  3930. . 1)
  3931. (((((sin (quotient (times 2 pi) 5)) . 1)
  3932. (((cos (quotient (times 2 pi) 5)) . 1) . -2)))
  3933. . 1))
  3934. ((((((sin (quotient (times 2 pi) 5)) . 1)
  3935. (((cos (quotient (times 2 pi) 5)) . 1) . 2)))
  3936. . 1)
  3937. (((((sin (quotient (times 2 pi) 5)) . 2) . -1)
  3938. (((cos (quotient (times 2 pi) 5)) . 2) . 1))
  3939. . 1))))
  3940. (r3c5
  3941. (((((((sin (quotient (times 2 pi) 5)) . 2)
  3942. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  3943. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  3944. . 1)
  3945. (((((sin (quotient (times 2 pi) 5)) . 3) . 1)
  3946. (((sin (quotient (times 2 pi) 5)) . 1)
  3947. (((cos (quotient (times 2 pi) 5)) . 2) . -3)))
  3948. . 1))
  3949. ((((((sin (quotient (times 2 pi) 5)) . 3) . -1)
  3950. (((sin (quotient (times 2 pi) 5)) . 1)
  3951. (((cos (quotient (times 2 pi) 5)) . 2) . 3)))
  3952. . 1)
  3953. (((((sin (quotient (times 2 pi) 5)) . 2)
  3954. (((cos (quotient (times 2 pi) 5)) . 1) . -3))
  3955. (((cos (quotient (times 2 pi) 5)) . 3) . 1))
  3956. . 1))))
  3957. (r4c5
  3958. (((((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  3959. (((sin (quotient (times 2 pi) 5)) . 2)
  3960. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  3961. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  3962. . 1)
  3963. (((((sin (quotient (times 2 pi) 5)) . 3)
  3964. (((cos (quotient (times 2 pi) 5)) . 1) . 4))
  3965. (((sin (quotient (times 2 pi) 5)) . 1)
  3966. (((cos (quotient (times 2 pi) 5)) . 3) . -4)))
  3967. . 1))
  3968. ((((((sin (quotient (times 2 pi) 5)) . 3)
  3969. (((cos (quotient (times 2 pi) 5)) . 1) . -4))
  3970. (((sin (quotient (times 2 pi) 5)) . 1)
  3971. (((cos (quotient (times 2 pi) 5)) . 3) . 4)))
  3972. . 1)
  3973. (((((sin (quotient (times 2 pi) 5)) . 4) . 1)
  3974. (((sin (quotient (times 2 pi) 5)) . 2)
  3975. (((cos (quotient (times 2 pi) 5)) . 2) . -6))
  3976. (((cos (quotient (times 2 pi) 5)) . 4) . 1))
  3977. . 1))))),'real)$
  3978. set!*representation('c5,
  3979. '(complextype
  3980. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  3981. (rc5
  3982. (((((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  3983. (((((sin (quotient (times 4 pi) 5)) . 1) . -1)) . 1))
  3984. ((((((sin (quotient (times 4 pi) 5)) . 1) . 1)) . 1)
  3985. (((((cos (quotient (times 4 pi) 5)) . 1) . 1)) . 1))))
  3986. (r2c5
  3987. (((((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  3988. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  3989. . 1)
  3990. (((((sin (quotient (times 4 pi) 5)) . 1)
  3991. (((cos (quotient (times 4 pi) 5)) . 1) . -2)))
  3992. . 1))
  3993. ((((((sin (quotient (times 4 pi) 5)) . 1)
  3994. (((cos (quotient (times 4 pi) 5)) . 1) . 2)))
  3995. . 1)
  3996. (((((sin (quotient (times 4 pi) 5)) . 2) . -1)
  3997. (((cos (quotient (times 4 pi) 5)) . 2) . 1))
  3998. . 1))))
  3999. (r3c5
  4000. (((((((sin (quotient (times 4 pi) 5)) . 2)
  4001. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  4002. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  4003. . 1)
  4004. (((((sin (quotient (times 4 pi) 5)) . 3) . 1)
  4005. (((sin (quotient (times 4 pi) 5)) . 1)
  4006. (((cos (quotient (times 4 pi) 5)) . 2) . -3)))
  4007. . 1))
  4008. ((((((sin (quotient (times 4 pi) 5)) . 3) . -1)
  4009. (((sin (quotient (times 4 pi) 5)) . 1)
  4010. (((cos (quotient (times 4 pi) 5)) . 2) . 3)))
  4011. . 1)
  4012. (((((sin (quotient (times 4 pi) 5)) . 2)
  4013. (((cos (quotient (times 4 pi) 5)) . 1) . -3))
  4014. (((cos (quotient (times 4 pi) 5)) . 3) . 1))
  4015. . 1))))
  4016. (r4c5
  4017. (((((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  4018. (((sin (quotient (times 4 pi) 5)) . 2)
  4019. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  4020. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  4021. . 1)
  4022. (((((sin (quotient (times 4 pi) 5)) . 3)
  4023. (((cos (quotient (times 4 pi) 5)) . 1) . 4))
  4024. (((sin (quotient (times 4 pi) 5)) . 1)
  4025. (((cos (quotient (times 4 pi) 5)) . 3) . -4)))
  4026. . 1))
  4027. ((((((sin (quotient (times 4 pi) 5)) . 3)
  4028. (((cos (quotient (times 4 pi) 5)) . 1) . -4))
  4029. (((sin (quotient (times 4 pi) 5)) . 1)
  4030. (((cos (quotient (times 4 pi) 5)) . 3) . 4)))
  4031. . 1)
  4032. (((((sin (quotient (times 4 pi) 5)) . 4) . 1)
  4033. (((sin (quotient (times 4 pi) 5)) . 2)
  4034. (((cos (quotient (times 4 pi) 5)) . 2) . -6))
  4035. (((cos (quotient (times 4 pi) 5)) . 4) . 1))
  4036. . 1))))),'real)$
  4037. set!*available 'c5$
  4038. % Symmetry data, part 2.
  4039. set!*elems!*group('c6,'(id rc6 r2c6 r3c6 r4c6 r5c6))$
  4040. set!*generators('c6,'(rc6))$
  4041. set!*relations('c6,'(((rc6 rc6 rc6 rc6 rc6 rc6) (id))))$
  4042. set!*grouptable('c6,
  4043. '((grouptable id rc6 r2c6 r3c6 r4c6 r5c6)
  4044. (id id rc6 r2c6 r3c6 r4c6 r5c6)
  4045. (rc6 rc6 r2c6 r3c6 r4c6 r5c6 id)
  4046. (r2c6 r2c6 r3c6 r4c6 r5c6 id rc6)
  4047. (r3c6 r3c6 r4c6 r5c6 id rc6 r2c6)
  4048. (r4c6 r4c6 r5c6 id rc6 r2c6 r3c6)
  4049. (r5c6 r5c6 id rc6 r2c6 r3c6 r4c6)))$
  4050. set!*inverse('c6,
  4051. '((id rc6 r2c6 r3c6 r4c6 r5c6) (id r5c6 r4c6 r3c6 r2c6 rc6)))$
  4052. set!*elemasgen('c6,
  4053. '(((rc6) (rc6))
  4054. ((r2c6) (rc6 rc6))
  4055. ((r3c6) (rc6 rc6 rc6))
  4056. ((r4c6) (rc6 rc6 rc6 rc6))
  4057. ((r5c6) (rc6 rc6 rc6 rc6 rc6))))$
  4058. set!*group('c6,'((id) (rc6) (r2c6) (r3c6) (r4c6) (r5c6)))$
  4059. set!*representation('c6,
  4060. '((id (((1 . 1))))
  4061. (rc6 (((1 . 1))))
  4062. (r2c6 (((1 . 1))))
  4063. (r3c6 (((1 . 1))))
  4064. (r4c6 (((1 . 1))))
  4065. (r5c6 (((1 . 1))))),'complex)$
  4066. set!*representation('c6,
  4067. '((id (((1 . 1))))
  4068. (rc6 (((-1 . 1))))
  4069. (r2c6 (((1 . 1))))
  4070. (r3c6 (((-1 . 1))))
  4071. (r4c6 (((1 . 1))))
  4072. (r5c6 (((-1 . 1))))),'complex)$
  4073. set!*representation('c6,
  4074. '((id (((1 . 1))))
  4075. (rc6
  4076. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . 1)
  4077. . 2))))
  4078. (r2c6
  4079. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  4080. . 2))))
  4081. (r3c6 (((-1 . 1))))
  4082. (r4c6
  4083. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  4084. . 2))))
  4085. (r5c6
  4086. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . 1)
  4087. . 2))))),'complex)$
  4088. set!*representation('c6,
  4089. '((id (((1 . 1))))
  4090. (rc6
  4091. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  4092. . 2))))
  4093. (r2c6
  4094. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  4095. . 2))))
  4096. (r3c6 (((1 . 1))))
  4097. (r4c6
  4098. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  4099. . 2))))
  4100. (r5c6
  4101. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  4102. . 2))))),'complex)$
  4103. set!*representation('c6,
  4104. '((id (((1 . 1))))
  4105. (rc6
  4106. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  4107. . 2))))
  4108. (r2c6
  4109. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  4110. . 2))))
  4111. (r3c6 (((1 . 1))))
  4112. (r4c6
  4113. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  4114. . 2))))
  4115. (r5c6
  4116. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  4117. . 2))))),'complex)$
  4118. set!*representation('c6,
  4119. '((id (((1 . 1))))
  4120. (rc6
  4121. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . 1)
  4122. . 2))))
  4123. (r2c6
  4124. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1)) . -1)
  4125. . 2))))
  4126. (r3c6 (((-1 . 1))))
  4127. (r4c6
  4128. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . -1)
  4129. . 2))))
  4130. (r5c6
  4131. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1)) . 1)
  4132. . 2))))),'complex)$
  4133. set!*representation('c6,
  4134. '(realtype
  4135. (id (((1 . 1))))
  4136. (rc6 (((1 . 1))))
  4137. (r2c6 (((1 . 1))))
  4138. (r3c6 (((1 . 1))))
  4139. (r4c6 (((1 . 1))))
  4140. (r5c6 (((1 . 1))))),'real)$
  4141. set!*representation('c6,
  4142. '(realtype
  4143. (id (((1 . 1))))
  4144. (rc6 (((-1 . 1))))
  4145. (r2c6 (((1 . 1))))
  4146. (r3c6 (((-1 . 1))))
  4147. (r4c6 (((1 . 1))))
  4148. (r5c6 (((-1 . 1))))),'real)$
  4149. set!*representation('c6,
  4150. '(complextype
  4151. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  4152. (rc6
  4153. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  4154. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (1 . 2))))
  4155. (r2c6
  4156. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  4157. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  4158. (r3c6 (((-1 . 1) (nil . 1)) ((nil . 1) (-1 . 1))))
  4159. (r4c6
  4160. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4161. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4162. (-1 . 2))))
  4163. (r5c6
  4164. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4165. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4166. (1 . 2))))),'real)$
  4167. set!*representation('c6,
  4168. '(complextype
  4169. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  4170. (rc6
  4171. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  4172. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  4173. (r2c6
  4174. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4175. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4176. (-1 . 2))))
  4177. (r3c6 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  4178. (r4c6
  4179. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  4180. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  4181. (r5c6
  4182. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4183. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4184. (-1 . 2))))),'real)$
  4185. set!*available 'c6$
  4186. set!*elems!*group('s4,
  4187. '(id
  4188. bacd
  4189. acbd
  4190. abdc
  4191. dbca
  4192. cabd
  4193. bcad
  4194. dacb
  4195. bdca
  4196. dbac
  4197. cbda
  4198. adbc
  4199. acdb
  4200. badc
  4201. cdab
  4202. dcba
  4203. cbad
  4204. adcb
  4205. bcda
  4206. bdac
  4207. cadb
  4208. dabc
  4209. cdba
  4210. dcab))$
  4211. set!*generators('s4,'(bacd acbd abdc dbca))$
  4212. set!*relations('s4,
  4213. '(((bacd bacd) (id))
  4214. ((acbd acbd) (id))
  4215. ((abdc abdc) (id))
  4216. ((dbca) (bacd acbd abdc acbd bacd))))$
  4217. set!*grouptable('s4,
  4218. '((grouptable
  4219. dcab
  4220. dcba
  4221. dbac
  4222. dbca
  4223. dabc
  4224. dacb
  4225. cdab
  4226. cdba
  4227. cbad
  4228. cbda
  4229. cabd
  4230. cadb
  4231. bdac
  4232. bdca
  4233. bcad
  4234. bcda
  4235. bacd
  4236. badc
  4237. adbc
  4238. adcb
  4239. acbd
  4240. acdb
  4241. id
  4242. abdc)
  4243. (dcab
  4244. badc
  4245. abdc
  4246. cadb
  4247. acdb
  4248. cbda
  4249. bcda
  4250. bacd
  4251. id
  4252. dacb
  4253. adcb
  4254. dbca
  4255. bdca
  4256. cabd
  4257. acbd
  4258. dabc
  4259. adbc
  4260. dcba
  4261. cdba
  4262. cbad
  4263. bcad
  4264. dbac
  4265. bdac
  4266. dcab
  4267. cdab)
  4268. (dcba
  4269. bacd
  4270. id
  4271. cabd
  4272. acbd
  4273. cbad
  4274. bcad
  4275. badc
  4276. abdc
  4277. dabc
  4278. adbc
  4279. dbac
  4280. bdac
  4281. cadb
  4282. acdb
  4283. dacb
  4284. adcb
  4285. dcab
  4286. cdab
  4287. cbda
  4288. bcda
  4289. dbca
  4290. bdca
  4291. dcba
  4292. cdba)
  4293. (dbac
  4294. bcda
  4295. acdb
  4296. cbda
  4297. abdc
  4298. cadb
  4299. badc
  4300. bdca
  4301. adcb
  4302. dbca
  4303. id
  4304. dacb
  4305. bacd
  4306. cdba
  4307. adbc
  4308. dcba
  4309. acbd
  4310. dabc
  4311. cabd
  4312. cdab
  4313. bdac
  4314. dcab
  4315. bcad
  4316. dbac
  4317. cbad)
  4318. (dbca
  4319. bcad
  4320. acbd
  4321. cbad
  4322. id
  4323. cabd
  4324. bacd
  4325. bdac
  4326. adbc
  4327. dbac
  4328. abdc
  4329. dabc
  4330. badc
  4331. cdab
  4332. adcb
  4333. dcab
  4334. acdb
  4335. dacb
  4336. cadb
  4337. cdba
  4338. bdca
  4339. dcba
  4340. bcda
  4341. dbca
  4342. cbda)
  4343. (dabc
  4344. bdca
  4345. adcb
  4346. cdba
  4347. adbc
  4348. cdab
  4349. bdac
  4350. bcda
  4351. acdb
  4352. dcba
  4353. acbd
  4354. dcab
  4355. bcad
  4356. cbda
  4357. abdc
  4358. dbca
  4359. id
  4360. dbac
  4361. cbad
  4362. cadb
  4363. badc
  4364. dacb
  4365. bacd
  4366. dabc
  4367. cabd)
  4368. (dacb
  4369. bdac
  4370. adbc
  4371. cdab
  4372. adcb
  4373. cdba
  4374. bdca
  4375. bcad
  4376. acbd
  4377. dcab
  4378. acdb
  4379. dcba
  4380. bcda
  4381. cbad
  4382. id
  4383. dbac
  4384. abdc
  4385. dbca
  4386. cbda
  4387. cabd
  4388. bacd
  4389. dabc
  4390. badc
  4391. dacb
  4392. cadb)
  4393. (cdab
  4394. abdc
  4395. badc
  4396. acdb
  4397. cadb
  4398. bcda
  4399. cbda
  4400. id
  4401. bacd
  4402. adcb
  4403. dacb
  4404. bdca
  4405. dbca
  4406. acbd
  4407. cabd
  4408. adbc
  4409. dabc
  4410. cdba
  4411. dcba
  4412. bcad
  4413. cbad
  4414. bdac
  4415. dbac
  4416. cdab
  4417. dcab)
  4418. (cdba
  4419. id
  4420. bacd
  4421. acbd
  4422. cabd
  4423. bcad
  4424. cbad
  4425. abdc
  4426. badc
  4427. adbc
  4428. dabc
  4429. bdac
  4430. dbac
  4431. acdb
  4432. cadb
  4433. adcb
  4434. dacb
  4435. cdab
  4436. dcab
  4437. bcda
  4438. cbda
  4439. bdca
  4440. dbca
  4441. cdba
  4442. dcba)
  4443. (cbad
  4444. acdb
  4445. bcda
  4446. abdc
  4447. cbda
  4448. badc
  4449. cadb
  4450. adcb
  4451. bdca
  4452. id
  4453. dbca
  4454. bacd
  4455. dacb
  4456. adbc
  4457. cdba
  4458. acbd
  4459. dcba
  4460. cabd
  4461. dabc
  4462. bdac
  4463. cdab
  4464. bcad
  4465. dcab
  4466. cbad
  4467. dbac)
  4468. (cbda
  4469. acbd
  4470. bcad
  4471. id
  4472. cbad
  4473. bacd
  4474. cabd
  4475. adbc
  4476. bdac
  4477. abdc
  4478. dbac
  4479. badc
  4480. dabc
  4481. adcb
  4482. cdab
  4483. acdb
  4484. dcab
  4485. cadb
  4486. dacb
  4487. bdca
  4488. cdba
  4489. bcda
  4490. dcba
  4491. cbda
  4492. dbca)
  4493. (cabd
  4494. adcb
  4495. bdca
  4496. adbc
  4497. cdba
  4498. bdac
  4499. cdab
  4500. acdb
  4501. bcda
  4502. acbd
  4503. dcba
  4504. bcad
  4505. dcab
  4506. abdc
  4507. cbda
  4508. id
  4509. dbca
  4510. cbad
  4511. dbac
  4512. badc
  4513. cadb
  4514. bacd
  4515. dacb
  4516. cabd
  4517. dabc)
  4518. (cadb
  4519. adbc
  4520. bdac
  4521. adcb
  4522. cdab
  4523. bdca
  4524. cdba
  4525. acbd
  4526. bcad
  4527. acdb
  4528. dcab
  4529. bcda
  4530. dcba
  4531. id
  4532. cbad
  4533. abdc
  4534. dbac
  4535. cbda
  4536. dbca
  4537. bacd
  4538. cabd
  4539. badc
  4540. dabc
  4541. cadb
  4542. dacb)
  4543. (bdac
  4544. cbda
  4545. cadb
  4546. bcda
  4547. badc
  4548. acdb
  4549. abdc
  4550. dbca
  4551. dacb
  4552. bdca
  4553. bacd
  4554. adcb
  4555. id
  4556. dcba
  4557. dabc
  4558. cdba
  4559. cabd
  4560. adbc
  4561. acbd
  4562. dcab
  4563. dbac
  4564. cdab
  4565. cbad
  4566. bdac
  4567. bcad)
  4568. (bdca
  4569. cbad
  4570. cabd
  4571. bcad
  4572. bacd
  4573. acbd
  4574. id
  4575. dbac
  4576. dabc
  4577. bdac
  4578. badc
  4579. adbc
  4580. abdc
  4581. dcab
  4582. dacb
  4583. cdab
  4584. cadb
  4585. adcb
  4586. acdb
  4587. dcba
  4588. dbca
  4589. cdba
  4590. cbda
  4591. bdca
  4592. bcda)
  4593. (bcad
  4594. cadb
  4595. cbda
  4596. badc
  4597. bcda
  4598. abdc
  4599. acdb
  4600. dacb
  4601. dbca
  4602. bacd
  4603. bdca
  4604. id
  4605. adcb
  4606. dabc
  4607. dcba
  4608. cabd
  4609. cdba
  4610. acbd
  4611. adbc
  4612. dbac
  4613. dcab
  4614. cbad
  4615. cdab
  4616. bcad
  4617. bdac)
  4618. (bcda
  4619. cabd
  4620. cbad
  4621. bacd
  4622. bcad
  4623. id
  4624. acbd
  4625. dabc
  4626. dbac
  4627. badc
  4628. bdac
  4629. abdc
  4630. adbc
  4631. dacb
  4632. dcab
  4633. cadb
  4634. cdab
  4635. acdb
  4636. adcb
  4637. dbca
  4638. dcba
  4639. cbda
  4640. cdba
  4641. bcda
  4642. bdca)
  4643. (bacd
  4644. cdab
  4645. cdba
  4646. bdac
  4647. bdca
  4648. adbc
  4649. adcb
  4650. dcab
  4651. dcba
  4652. bcad
  4653. bcda
  4654. acbd
  4655. acdb
  4656. dbac
  4657. dbca
  4658. cbad
  4659. cbda
  4660. id
  4661. abdc
  4662. dabc
  4663. dacb
  4664. cabd
  4665. cadb
  4666. bacd
  4667. badc)
  4668. (badc
  4669. cdba
  4670. cdab
  4671. bdca
  4672. bdac
  4673. adcb
  4674. adbc
  4675. dcba
  4676. dcab
  4677. bcda
  4678. bcad
  4679. acdb
  4680. acbd
  4681. dbca
  4682. dbac
  4683. cbda
  4684. cbad
  4685. abdc
  4686. id
  4687. dacb
  4688. dabc
  4689. cadb
  4690. cabd
  4691. badc
  4692. bacd)
  4693. (adbc
  4694. dbca
  4695. dacb
  4696. dcba
  4697. dabc
  4698. dcab
  4699. dbac
  4700. cbda
  4701. cadb
  4702. cdba
  4703. cabd
  4704. cdab
  4705. cbad
  4706. bcda
  4707. badc
  4708. bdca
  4709. bacd
  4710. bdac
  4711. bcad
  4712. acdb
  4713. abdc
  4714. adcb
  4715. id
  4716. adbc
  4717. acbd)
  4718. (adcb
  4719. dbac
  4720. dabc
  4721. dcab
  4722. dacb
  4723. dcba
  4724. dbca
  4725. cbad
  4726. cabd
  4727. cdab
  4728. cadb
  4729. cdba
  4730. cbda
  4731. bcad
  4732. bacd
  4733. bdac
  4734. badc
  4735. bdca
  4736. bcda
  4737. acbd
  4738. id
  4739. adbc
  4740. abdc
  4741. adcb
  4742. acdb)
  4743. (acbd
  4744. dacb
  4745. dbca
  4746. dabc
  4747. dcba
  4748. dbac
  4749. dcab
  4750. cadb
  4751. cbda
  4752. cabd
  4753. cdba
  4754. cbad
  4755. cdab
  4756. badc
  4757. bcda
  4758. bacd
  4759. bdca
  4760. bcad
  4761. bdac
  4762. abdc
  4763. acdb
  4764. id
  4765. adcb
  4766. acbd
  4767. adbc)
  4768. (acdb
  4769. dabc
  4770. dbac
  4771. dacb
  4772. dcab
  4773. dbca
  4774. dcba
  4775. cabd
  4776. cbad
  4777. cadb
  4778. cdab
  4779. cbda
  4780. cdba
  4781. bacd
  4782. bcad
  4783. badc
  4784. bdac
  4785. bcda
  4786. bdca
  4787. id
  4788. acbd
  4789. abdc
  4790. adbc
  4791. acdb
  4792. adcb)
  4793. (id
  4794. dcab
  4795. dcba
  4796. dbac
  4797. dbca
  4798. dabc
  4799. dacb
  4800. cdab
  4801. cdba
  4802. cbad
  4803. cbda
  4804. cabd
  4805. cadb
  4806. bdac
  4807. bdca
  4808. bcad
  4809. bcda
  4810. bacd
  4811. badc
  4812. adbc
  4813. adcb
  4814. acbd
  4815. acdb
  4816. id
  4817. abdc)
  4818. (abdc
  4819. dcba
  4820. dcab
  4821. dbca
  4822. dbac
  4823. dacb
  4824. dabc
  4825. cdba
  4826. cdab
  4827. cbda
  4828. cbad
  4829. cadb
  4830. cabd
  4831. bdca
  4832. bdac
  4833. bcda
  4834. bcad
  4835. badc
  4836. bacd
  4837. adcb
  4838. adbc
  4839. acdb
  4840. acbd
  4841. abdc
  4842. id)))$
  4843. set!*inverse('s4,
  4844. '((dcab
  4845. dcba
  4846. dbac
  4847. dbca
  4848. dabc
  4849. dacb
  4850. cdab
  4851. cdba
  4852. cbad
  4853. cbda
  4854. cabd
  4855. cadb
  4856. bdac
  4857. bdca
  4858. bcad
  4859. bcda
  4860. bacd
  4861. badc
  4862. adbc
  4863. adcb
  4864. acbd
  4865. acdb
  4866. id
  4867. abdc)
  4868. (cdba
  4869. dcba
  4870. cbda
  4871. dbca
  4872. bcda
  4873. bdca
  4874. cdab
  4875. dcab
  4876. cbad
  4877. dbac
  4878. bcad
  4879. bdac
  4880. cadb
  4881. dacb
  4882. cabd
  4883. dabc
  4884. bacd
  4885. badc
  4886. acdb
  4887. adcb
  4888. acbd
  4889. adbc
  4890. id
  4891. abdc)))$
  4892. set!*elemasgen('s4,
  4893. '(((bacd) (bacd))
  4894. ((acbd) (acbd))
  4895. ((abdc) (abdc))
  4896. ((dbca) (dbca))
  4897. ((cabd) (bacd acbd))
  4898. ((bcad) (acbd bacd))
  4899. ((dacb) (dbca bacd))
  4900. ((bdca) (bacd dbca))
  4901. ((dbac) (abdc dbca))
  4902. ((cbda) (dbca abdc))
  4903. ((adbc) (acbd abdc))
  4904. ((acdb) (abdc acbd))
  4905. ((badc) (bacd abdc))
  4906. ((cdab) (abdc bacd acbd dbca))
  4907. ((dcba) (acbd dbca))
  4908. ((cbad) (bacd acbd bacd))
  4909. ((adcb) (dbca bacd dbca))
  4910. ((bcda) (abdc acbd bacd))
  4911. ((bdac) (acbd bacd abdc))
  4912. ((cadb) (abdc bacd acbd))
  4913. ((dabc) (bacd acbd abdc))
  4914. ((cdba) (bacd acbd dbca))
  4915. ((dcab) (abdc acbd dbca))))$
  4916. set!*group('s4,
  4917. '((dcab dabc cadb bdac bcda cdba)
  4918. (dcba badc cdab)
  4919. (dbac dacb cabd adbc acdb bcad bdca cbda)
  4920. (dbca adcb abdc acbd bacd cbad)
  4921. (id)))$
  4922. set!*representation('s4,
  4923. '((id (((1 . 1))))
  4924. (bacd (((1 . 1))))
  4925. (acbd (((1 . 1))))
  4926. (abdc (((1 . 1))))
  4927. (dbca (((1 . 1))))
  4928. (cabd (((1 . 1))))
  4929. (bcad (((1 . 1))))
  4930. (dacb (((1 . 1))))
  4931. (bdca (((1 . 1))))
  4932. (dbac (((1 . 1))))
  4933. (cbda (((1 . 1))))
  4934. (adbc (((1 . 1))))
  4935. (acdb (((1 . 1))))
  4936. (badc (((1 . 1))))
  4937. (cdab (((1 . 1))))
  4938. (dcba (((1 . 1))))
  4939. (cbad (((1 . 1))))
  4940. (adcb (((1 . 1))))
  4941. (bcda (((1 . 1))))
  4942. (bdac (((1 . 1))))
  4943. (cadb (((1 . 1))))
  4944. (dabc (((1 . 1))))
  4945. (cdba (((1 . 1))))
  4946. (dcab (((1 . 1))))),'complex)$
  4947. set!*representation('s4,
  4948. '((id (((1 . 1))))
  4949. (bacd (((-1 . 1))))
  4950. (acbd (((-1 . 1))))
  4951. (abdc (((-1 . 1))))
  4952. (dbca (((-1 . 1))))
  4953. (cabd (((1 . 1))))
  4954. (bcad (((1 . 1))))
  4955. (dacb (((1 . 1))))
  4956. (bdca (((1 . 1))))
  4957. (dbac (((1 . 1))))
  4958. (cbda (((1 . 1))))
  4959. (adbc (((1 . 1))))
  4960. (acdb (((1 . 1))))
  4961. (badc (((1 . 1))))
  4962. (cdab (((1 . 1))))
  4963. (dcba (((1 . 1))))
  4964. (cbad (((-1 . 1))))
  4965. (adcb (((-1 . 1))))
  4966. (bcda (((-1 . 1))))
  4967. (bdac (((-1 . 1))))
  4968. (cadb (((-1 . 1))))
  4969. (dabc (((-1 . 1))))
  4970. (cdba (((-1 . 1))))
  4971. (dcab (((-1 . 1))))),'complex)$
  4972. set!*representation('s4,
  4973. '((id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  4974. (bacd
  4975. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4976. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  4977. (acbd
  4978. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  4979. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4980. (-1 . 2))))
  4981. (abdc
  4982. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4983. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  4984. (dbca
  4985. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  4986. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4987. (-1 . 2))))
  4988. (cabd
  4989. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  4990. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  4991. (bcad
  4992. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4993. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4994. (-1 . 2))))
  4995. (dacb
  4996. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  4997. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  4998. (-1 . 2))))
  4999. (bdca
  5000. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5001. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5002. (dbac
  5003. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5004. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5005. (cbda
  5006. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5007. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5008. (-1 . 2))))
  5009. (adbc
  5010. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5011. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5012. (-1 . 2))))
  5013. (acdb
  5014. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5015. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5016. (badc (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5017. (cdab (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5018. (dcba (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5019. (cbad (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5020. (adcb (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5021. (bcda (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5022. (bdac
  5023. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5024. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5025. (-1 . 2))))
  5026. (cadb
  5027. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5028. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5029. (-1 . 2))))
  5030. (dabc (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5031. (cdba
  5032. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5033. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5034. (dcab
  5035. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5036. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
  5037. (-1 . 2))))),'complex)$
  5038. set!*representation('s4,
  5039. '((id
  5040. (((1 . 1) (nil . 1) (nil . 1))
  5041. ((nil . 1) (1 . 1) (nil . 1))
  5042. ((nil . 1) (nil . 1) (1 . 1))))
  5043. (bacd
  5044. (((nil . 1) (nil . 1) (-1 . 1))
  5045. ((nil . 1) (1 . 1) (nil . 1))
  5046. ((-1 . 1) (nil . 1) (nil . 1))))
  5047. (acbd
  5048. (((nil . 1) (-1 . 1) (nil . 1))
  5049. ((-1 . 1) (nil . 1) (nil . 1))
  5050. ((nil . 1) (nil . 1) (1 . 1))))
  5051. (abdc
  5052. (((nil . 1) (nil . 1) (1 . 1))
  5053. ((nil . 1) (1 . 1) (nil . 1))
  5054. ((1 . 1) (nil . 1) (nil . 1))))
  5055. (dbca
  5056. (((nil . 1) (1 . 1) (nil . 1))
  5057. ((1 . 1) (nil . 1) (nil . 1))
  5058. ((nil . 1) (nil . 1) (1 . 1))))
  5059. (cabd
  5060. (((nil . 1) (nil . 1) (-1 . 1))
  5061. ((-1 . 1) (nil . 1) (nil . 1))
  5062. ((nil . 1) (1 . 1) (nil . 1))))
  5063. (bcad
  5064. (((nil . 1) (-1 . 1) (nil . 1))
  5065. ((nil . 1) (nil . 1) (1 . 1))
  5066. ((-1 . 1) (nil . 1) (nil . 1))))
  5067. (dacb
  5068. (((nil . 1) (1 . 1) (nil . 1))
  5069. ((nil . 1) (nil . 1) (-1 . 1))
  5070. ((-1 . 1) (nil . 1) (nil . 1))))
  5071. (bdca
  5072. (((nil . 1) (nil . 1) (-1 . 1))
  5073. ((1 . 1) (nil . 1) (nil . 1))
  5074. ((nil . 1) (-1 . 1) (nil . 1))))
  5075. (dbac
  5076. (((nil . 1) (nil . 1) (1 . 1))
  5077. ((1 . 1) (nil . 1) (nil . 1))
  5078. ((nil . 1) (1 . 1) (nil . 1))))
  5079. (cbda
  5080. (((nil . 1) (1 . 1) (nil . 1))
  5081. ((nil . 1) (nil . 1) (1 . 1))
  5082. ((1 . 1) (nil . 1) (nil . 1))))
  5083. (adbc
  5084. (((nil . 1) (-1 . 1) (nil . 1))
  5085. ((nil . 1) (nil . 1) (-1 . 1))
  5086. ((1 . 1) (nil . 1) (nil . 1))))
  5087. (acdb
  5088. (((nil . 1) (nil . 1) (1 . 1))
  5089. ((-1 . 1) (nil . 1) (nil . 1))
  5090. ((nil . 1) (-1 . 1) (nil . 1))))
  5091. (badc
  5092. (((-1 . 1) (nil . 1) (nil . 1))
  5093. ((nil . 1) (1 . 1) (nil . 1))
  5094. ((nil . 1) (nil . 1) (-1 . 1))))
  5095. (cdab
  5096. (((1 . 1) (nil . 1) (nil . 1))
  5097. ((nil . 1) (-1 . 1) (nil . 1))
  5098. ((nil . 1) (nil . 1) (-1 . 1))))
  5099. (dcba
  5100. (((-1 . 1) (nil . 1) (nil . 1))
  5101. ((nil . 1) (-1 . 1) (nil . 1))
  5102. ((nil . 1) (nil . 1) (1 . 1))))
  5103. (cbad
  5104. (((1 . 1) (nil . 1) (nil . 1))
  5105. ((nil . 1) (nil . 1) (1 . 1))
  5106. ((nil . 1) (1 . 1) (nil . 1))))
  5107. (adcb
  5108. (((1 . 1) (nil . 1) (nil . 1))
  5109. ((nil . 1) (nil . 1) (-1 . 1))
  5110. ((nil . 1) (-1 . 1) (nil . 1))))
  5111. (bcda
  5112. (((-1 . 1) (nil . 1) (nil . 1))
  5113. ((nil . 1) (nil . 1) (1 . 1))
  5114. ((nil . 1) (-1 . 1) (nil . 1))))
  5115. (bdac
  5116. (((nil . 1) (-1 . 1) (nil . 1))
  5117. ((1 . 1) (nil . 1) (nil . 1))
  5118. ((nil . 1) (nil . 1) (-1 . 1))))
  5119. (cadb
  5120. (((nil . 1) (1 . 1) (nil . 1))
  5121. ((-1 . 1) (nil . 1) (nil . 1))
  5122. ((nil . 1) (nil . 1) (-1 . 1))))
  5123. (dabc
  5124. (((-1 . 1) (nil . 1) (nil . 1))
  5125. ((nil . 1) (nil . 1) (-1 . 1))
  5126. ((nil . 1) (1 . 1) (nil . 1))))
  5127. (cdba
  5128. (((nil . 1) (nil . 1) (-1 . 1))
  5129. ((nil . 1) (-1 . 1) (nil . 1))
  5130. ((1 . 1) (nil . 1) (nil . 1))))
  5131. (dcab
  5132. (((nil . 1) (nil . 1) (1 . 1))
  5133. ((nil . 1) (-1 . 1) (nil . 1))
  5134. ((-1 . 1) (nil . 1) (nil . 1))))),'complex)$
  5135. set!*representation('s4,
  5136. '((id
  5137. (((1 . 1) (nil . 1) (nil . 1))
  5138. ((nil . 1) (1 . 1) (nil . 1))
  5139. ((nil . 1) (nil . 1) (1 . 1))))
  5140. (bacd
  5141. (((nil . 1) (nil . 1) (1 . 1))
  5142. ((nil . 1) (-1 . 1) (nil . 1))
  5143. ((1 . 1) (nil . 1) (nil . 1))))
  5144. (acbd
  5145. (((nil . 1) (1 . 1) (nil . 1))
  5146. ((1 . 1) (nil . 1) (nil . 1))
  5147. ((nil . 1) (nil . 1) (-1 . 1))))
  5148. (abdc
  5149. (((nil . 1) (nil . 1) (-1 . 1))
  5150. ((nil . 1) (-1 . 1) (nil . 1))
  5151. ((-1 . 1) (nil . 1) (nil . 1))))
  5152. (dbca
  5153. (((nil . 1) (-1 . 1) (nil . 1))
  5154. ((-1 . 1) (nil . 1) (nil . 1))
  5155. ((nil . 1) (nil . 1) (-1 . 1))))
  5156. (cabd
  5157. (((nil . 1) (nil . 1) (-1 . 1))
  5158. ((-1 . 1) (nil . 1) (nil . 1))
  5159. ((nil . 1) (1 . 1) (nil . 1))))
  5160. (bcad
  5161. (((nil . 1) (-1 . 1) (nil . 1))
  5162. ((nil . 1) (nil . 1) (1 . 1))
  5163. ((-1 . 1) (nil . 1) (nil . 1))))
  5164. (dacb
  5165. (((nil . 1) (1 . 1) (nil . 1))
  5166. ((nil . 1) (nil . 1) (-1 . 1))
  5167. ((-1 . 1) (nil . 1) (nil . 1))))
  5168. (bdca
  5169. (((nil . 1) (nil . 1) (-1 . 1))
  5170. ((1 . 1) (nil . 1) (nil . 1))
  5171. ((nil . 1) (-1 . 1) (nil . 1))))
  5172. (dbac
  5173. (((nil . 1) (nil . 1) (1 . 1))
  5174. ((1 . 1) (nil . 1) (nil . 1))
  5175. ((nil . 1) (1 . 1) (nil . 1))))
  5176. (cbda
  5177. (((nil . 1) (1 . 1) (nil . 1))
  5178. ((nil . 1) (nil . 1) (1 . 1))
  5179. ((1 . 1) (nil . 1) (nil . 1))))
  5180. (adbc
  5181. (((nil . 1) (-1 . 1) (nil . 1))
  5182. ((nil . 1) (nil . 1) (-1 . 1))
  5183. ((1 . 1) (nil . 1) (nil . 1))))
  5184. (acdb
  5185. (((nil . 1) (nil . 1) (1 . 1))
  5186. ((-1 . 1) (nil . 1) (nil . 1))
  5187. ((nil . 1) (-1 . 1) (nil . 1))))
  5188. (badc
  5189. (((-1 . 1) (nil . 1) (nil . 1))
  5190. ((nil . 1) (1 . 1) (nil . 1))
  5191. ((nil . 1) (nil . 1) (-1 . 1))))
  5192. (cdab
  5193. (((1 . 1) (nil . 1) (nil . 1))
  5194. ((nil . 1) (-1 . 1) (nil . 1))
  5195. ((nil . 1) (nil . 1) (-1 . 1))))
  5196. (dcba
  5197. (((-1 . 1) (nil . 1) (nil . 1))
  5198. ((nil . 1) (-1 . 1) (nil . 1))
  5199. ((nil . 1) (nil . 1) (1 . 1))))
  5200. (cbad
  5201. (((-1 . 1) (nil . 1) (nil . 1))
  5202. ((nil . 1) (nil . 1) (-1 . 1))
  5203. ((nil . 1) (-1 . 1) (nil . 1))))
  5204. (adcb
  5205. (((-1 . 1) (nil . 1) (nil . 1))
  5206. ((nil . 1) (nil . 1) (1 . 1))
  5207. ((nil . 1) (1 . 1) (nil . 1))))
  5208. (bcda
  5209. (((1 . 1) (nil . 1) (nil . 1))
  5210. ((nil . 1) (nil . 1) (-1 . 1))
  5211. ((nil . 1) (1 . 1) (nil . 1))))
  5212. (bdac
  5213. (((nil . 1) (1 . 1) (nil . 1))
  5214. ((-1 . 1) (nil . 1) (nil . 1))
  5215. ((nil . 1) (nil . 1) (1 . 1))))
  5216. (cadb
  5217. (((nil . 1) (-1 . 1) (nil . 1))
  5218. ((1 . 1) (nil . 1) (nil . 1))
  5219. ((nil . 1) (nil . 1) (1 . 1))))
  5220. (dabc
  5221. (((1 . 1) (nil . 1) (nil . 1))
  5222. ((nil . 1) (nil . 1) (1 . 1))
  5223. ((nil . 1) (-1 . 1) (nil . 1))))
  5224. (cdba
  5225. (((nil . 1) (nil . 1) (1 . 1))
  5226. ((nil . 1) (1 . 1) (nil . 1))
  5227. ((-1 . 1) (nil . 1) (nil . 1))))
  5228. (dcab
  5229. (((nil . 1) (nil . 1) (-1 . 1))
  5230. ((nil . 1) (1 . 1) (nil . 1))
  5231. ((1 . 1) (nil . 1) (nil . 1))))),'complex)$
  5232. set!*representation('s4,
  5233. '(realtype
  5234. (id (((1 . 1))))
  5235. (bacd (((1 . 1))))
  5236. (acbd (((1 . 1))))
  5237. (abdc (((1 . 1))))
  5238. (dbca (((1 . 1))))
  5239. (cabd (((1 . 1))))
  5240. (bcad (((1 . 1))))
  5241. (dacb (((1 . 1))))
  5242. (bdca (((1 . 1))))
  5243. (dbac (((1 . 1))))
  5244. (cbda (((1 . 1))))
  5245. (adbc (((1 . 1))))
  5246. (acdb (((1 . 1))))
  5247. (badc (((1 . 1))))
  5248. (cdab (((1 . 1))))
  5249. (dcba (((1 . 1))))
  5250. (cbad (((1 . 1))))
  5251. (adcb (((1 . 1))))
  5252. (bcda (((1 . 1))))
  5253. (bdac (((1 . 1))))
  5254. (cadb (((1 . 1))))
  5255. (dabc (((1 . 1))))
  5256. (cdba (((1 . 1))))
  5257. (dcab (((1 . 1))))),'real)$
  5258. set!*representation('s4,
  5259. '(realtype
  5260. (id (((1 . 1))))
  5261. (bacd (((-1 . 1))))
  5262. (acbd (((-1 . 1))))
  5263. (abdc (((-1 . 1))))
  5264. (dbca (((-1 . 1))))
  5265. (cabd (((1 . 1))))
  5266. (bcad (((1 . 1))))
  5267. (dacb (((1 . 1))))
  5268. (bdca (((1 . 1))))
  5269. (dbac (((1 . 1))))
  5270. (cbda (((1 . 1))))
  5271. (adbc (((1 . 1))))
  5272. (acdb (((1 . 1))))
  5273. (badc (((1 . 1))))
  5274. (cdab (((1 . 1))))
  5275. (dcba (((1 . 1))))
  5276. (cbad (((-1 . 1))))
  5277. (adcb (((-1 . 1))))
  5278. (bcda (((-1 . 1))))
  5279. (bdac (((-1 . 1))))
  5280. (cadb (((-1 . 1))))
  5281. (dabc (((-1 . 1))))
  5282. (cdba (((-1 . 1))))
  5283. (dcab (((-1 . 1))))),'real)$
  5284. set!*representation('s4,
  5285. '(realtype
  5286. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5287. (bacd
  5288. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5289. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5290. (acbd
  5291. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5292. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5293. (-1 . 2))))
  5294. (abdc
  5295. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5296. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5297. (dbca
  5298. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5299. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5300. (-1 . 2))))
  5301. (cabd
  5302. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5303. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5304. (bcad
  5305. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5306. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5307. (-1 . 2))))
  5308. (dacb
  5309. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5310. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5311. (-1 . 2))))
  5312. (bdca
  5313. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5314. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5315. (dbac
  5316. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5317. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5318. (cbda
  5319. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5320. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5321. (-1 . 2))))
  5322. (adbc
  5323. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5324. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5325. (-1 . 2))))
  5326. (acdb
  5327. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5328. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5329. (badc (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5330. (cdab (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5331. (dcba (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5332. (cbad (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5333. (adcb (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5334. (bcda (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5335. (bdac
  5336. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5337. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5338. (-1 . 2))))
  5339. (cadb
  5340. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . -1)) . 2))
  5341. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5342. (-1 . 2))))
  5343. (dabc (((-1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5344. (cdba
  5345. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5346. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2) (-1 . 2))))
  5347. (dcab
  5348. (((1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1)) . 2))
  5349. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
  5350. (-1 . 2))))),'real)$
  5351. set!*representation('s4,
  5352. '(realtype
  5353. (id
  5354. (((1 . 1) (nil . 1) (nil . 1))
  5355. ((nil . 1) (1 . 1) (nil . 1))
  5356. ((nil . 1) (nil . 1) (1 . 1))))
  5357. (bacd
  5358. (((nil . 1) (nil . 1) (-1 . 1))
  5359. ((nil . 1) (1 . 1) (nil . 1))
  5360. ((-1 . 1) (nil . 1) (nil . 1))))
  5361. (acbd
  5362. (((nil . 1) (-1 . 1) (nil . 1))
  5363. ((-1 . 1) (nil . 1) (nil . 1))
  5364. ((nil . 1) (nil . 1) (1 . 1))))
  5365. (abdc
  5366. (((nil . 1) (nil . 1) (1 . 1))
  5367. ((nil . 1) (1 . 1) (nil . 1))
  5368. ((1 . 1) (nil . 1) (nil . 1))))
  5369. (dbca
  5370. (((nil . 1) (1 . 1) (nil . 1))
  5371. ((1 . 1) (nil . 1) (nil . 1))
  5372. ((nil . 1) (nil . 1) (1 . 1))))
  5373. (cabd
  5374. (((nil . 1) (nil . 1) (-1 . 1))
  5375. ((-1 . 1) (nil . 1) (nil . 1))
  5376. ((nil . 1) (1 . 1) (nil . 1))))
  5377. (bcad
  5378. (((nil . 1) (-1 . 1) (nil . 1))
  5379. ((nil . 1) (nil . 1) (1 . 1))
  5380. ((-1 . 1) (nil . 1) (nil . 1))))
  5381. (dacb
  5382. (((nil . 1) (1 . 1) (nil . 1))
  5383. ((nil . 1) (nil . 1) (-1 . 1))
  5384. ((-1 . 1) (nil . 1) (nil . 1))))
  5385. (bdca
  5386. (((nil . 1) (nil . 1) (-1 . 1))
  5387. ((1 . 1) (nil . 1) (nil . 1))
  5388. ((nil . 1) (-1 . 1) (nil . 1))))
  5389. (dbac
  5390. (((nil . 1) (nil . 1) (1 . 1))
  5391. ((1 . 1) (nil . 1) (nil . 1))
  5392. ((nil . 1) (1 . 1) (nil . 1))))
  5393. (cbda
  5394. (((nil . 1) (1 . 1) (nil . 1))
  5395. ((nil . 1) (nil . 1) (1 . 1))
  5396. ((1 . 1) (nil . 1) (nil . 1))))
  5397. (adbc
  5398. (((nil . 1) (-1 . 1) (nil . 1))
  5399. ((nil . 1) (nil . 1) (-1 . 1))
  5400. ((1 . 1) (nil . 1) (nil . 1))))
  5401. (acdb
  5402. (((nil . 1) (nil . 1) (1 . 1))
  5403. ((-1 . 1) (nil . 1) (nil . 1))
  5404. ((nil . 1) (-1 . 1) (nil . 1))))
  5405. (badc
  5406. (((-1 . 1) (nil . 1) (nil . 1))
  5407. ((nil . 1) (1 . 1) (nil . 1))
  5408. ((nil . 1) (nil . 1) (-1 . 1))))
  5409. (cdab
  5410. (((1 . 1) (nil . 1) (nil . 1))
  5411. ((nil . 1) (-1 . 1) (nil . 1))
  5412. ((nil . 1) (nil . 1) (-1 . 1))))
  5413. (dcba
  5414. (((-1 . 1) (nil . 1) (nil . 1))
  5415. ((nil . 1) (-1 . 1) (nil . 1))
  5416. ((nil . 1) (nil . 1) (1 . 1))))
  5417. (cbad
  5418. (((1 . 1) (nil . 1) (nil . 1))
  5419. ((nil . 1) (nil . 1) (1 . 1))
  5420. ((nil . 1) (1 . 1) (nil . 1))))
  5421. (adcb
  5422. (((1 . 1) (nil . 1) (nil . 1))
  5423. ((nil . 1) (nil . 1) (-1 . 1))
  5424. ((nil . 1) (-1 . 1) (nil . 1))))
  5425. (bcda
  5426. (((-1 . 1) (nil . 1) (nil . 1))
  5427. ((nil . 1) (nil . 1) (1 . 1))
  5428. ((nil . 1) (-1 . 1) (nil . 1))))
  5429. (bdac
  5430. (((nil . 1) (-1 . 1) (nil . 1))
  5431. ((1 . 1) (nil . 1) (nil . 1))
  5432. ((nil . 1) (nil . 1) (-1 . 1))))
  5433. (cadb
  5434. (((nil . 1) (1 . 1) (nil . 1))
  5435. ((-1 . 1) (nil . 1) (nil . 1))
  5436. ((nil . 1) (nil . 1) (-1 . 1))))
  5437. (dabc
  5438. (((-1 . 1) (nil . 1) (nil . 1))
  5439. ((nil . 1) (nil . 1) (-1 . 1))
  5440. ((nil . 1) (1 . 1) (nil . 1))))
  5441. (cdba
  5442. (((nil . 1) (nil . 1) (-1 . 1))
  5443. ((nil . 1) (-1 . 1) (nil . 1))
  5444. ((1 . 1) (nil . 1) (nil . 1))))
  5445. (dcab
  5446. (((nil . 1) (nil . 1) (1 . 1))
  5447. ((nil . 1) (-1 . 1) (nil . 1))
  5448. ((-1 . 1) (nil . 1) (nil . 1))))),'real)$
  5449. set!*representation('s4,
  5450. '(realtype
  5451. (id
  5452. (((1 . 1) (nil . 1) (nil . 1))
  5453. ((nil . 1) (1 . 1) (nil . 1))
  5454. ((nil . 1) (nil . 1) (1 . 1))))
  5455. (bacd
  5456. (((nil . 1) (nil . 1) (1 . 1))
  5457. ((nil . 1) (-1 . 1) (nil . 1))
  5458. ((1 . 1) (nil . 1) (nil . 1))))
  5459. (acbd
  5460. (((nil . 1) (1 . 1) (nil . 1))
  5461. ((1 . 1) (nil . 1) (nil . 1))
  5462. ((nil . 1) (nil . 1) (-1 . 1))))
  5463. (abdc
  5464. (((nil . 1) (nil . 1) (-1 . 1))
  5465. ((nil . 1) (-1 . 1) (nil . 1))
  5466. ((-1 . 1) (nil . 1) (nil . 1))))
  5467. (dbca
  5468. (((nil . 1) (-1 . 1) (nil . 1))
  5469. ((-1 . 1) (nil . 1) (nil . 1))
  5470. ((nil . 1) (nil . 1) (-1 . 1))))
  5471. (cabd
  5472. (((nil . 1) (nil . 1) (-1 . 1))
  5473. ((-1 . 1) (nil . 1) (nil . 1))
  5474. ((nil . 1) (1 . 1) (nil . 1))))
  5475. (bcad
  5476. (((nil . 1) (-1 . 1) (nil . 1))
  5477. ((nil . 1) (nil . 1) (1 . 1))
  5478. ((-1 . 1) (nil . 1) (nil . 1))))
  5479. (dacb
  5480. (((nil . 1) (1 . 1) (nil . 1))
  5481. ((nil . 1) (nil . 1) (-1 . 1))
  5482. ((-1 . 1) (nil . 1) (nil . 1))))
  5483. (bdca
  5484. (((nil . 1) (nil . 1) (-1 . 1))
  5485. ((1 . 1) (nil . 1) (nil . 1))
  5486. ((nil . 1) (-1 . 1) (nil . 1))))
  5487. (dbac
  5488. (((nil . 1) (nil . 1) (1 . 1))
  5489. ((1 . 1) (nil . 1) (nil . 1))
  5490. ((nil . 1) (1 . 1) (nil . 1))))
  5491. (cbda
  5492. (((nil . 1) (1 . 1) (nil . 1))
  5493. ((nil . 1) (nil . 1) (1 . 1))
  5494. ((1 . 1) (nil . 1) (nil . 1))))
  5495. (adbc
  5496. (((nil . 1) (-1 . 1) (nil . 1))
  5497. ((nil . 1) (nil . 1) (-1 . 1))
  5498. ((1 . 1) (nil . 1) (nil . 1))))
  5499. (acdb
  5500. (((nil . 1) (nil . 1) (1 . 1))
  5501. ((-1 . 1) (nil . 1) (nil . 1))
  5502. ((nil . 1) (-1 . 1) (nil . 1))))
  5503. (badc
  5504. (((-1 . 1) (nil . 1) (nil . 1))
  5505. ((nil . 1) (1 . 1) (nil . 1))
  5506. ((nil . 1) (nil . 1) (-1 . 1))))
  5507. (cdab
  5508. (((1 . 1) (nil . 1) (nil . 1))
  5509. ((nil . 1) (-1 . 1) (nil . 1))
  5510. ((nil . 1) (nil . 1) (-1 . 1))))
  5511. (dcba
  5512. (((-1 . 1) (nil . 1) (nil . 1))
  5513. ((nil . 1) (-1 . 1) (nil . 1))
  5514. ((nil . 1) (nil . 1) (1 . 1))))
  5515. (cbad
  5516. (((-1 . 1) (nil . 1) (nil . 1))
  5517. ((nil . 1) (nil . 1) (-1 . 1))
  5518. ((nil . 1) (-1 . 1) (nil . 1))))
  5519. (adcb
  5520. (((-1 . 1) (nil . 1) (nil . 1))
  5521. ((nil . 1) (nil . 1) (1 . 1))
  5522. ((nil . 1) (1 . 1) (nil . 1))))
  5523. (bcda
  5524. (((1 . 1) (nil . 1) (nil . 1))
  5525. ((nil . 1) (nil . 1) (-1 . 1))
  5526. ((nil . 1) (1 . 1) (nil . 1))))
  5527. (bdac
  5528. (((nil . 1) (1 . 1) (nil . 1))
  5529. ((-1 . 1) (nil . 1) (nil . 1))
  5530. ((nil . 1) (nil . 1) (1 . 1))))
  5531. (cadb
  5532. (((nil . 1) (-1 . 1) (nil . 1))
  5533. ((1 . 1) (nil . 1) (nil . 1))
  5534. ((nil . 1) (nil . 1) (1 . 1))))
  5535. (dabc
  5536. (((1 . 1) (nil . 1) (nil . 1))
  5537. ((nil . 1) (nil . 1) (1 . 1))
  5538. ((nil . 1) (-1 . 1) (nil . 1))))
  5539. (cdba
  5540. (((nil . 1) (nil . 1) (1 . 1))
  5541. ((nil . 1) (1 . 1) (nil . 1))
  5542. ((-1 . 1) (nil . 1) (nil . 1))))
  5543. (dcab
  5544. (((nil . 1) (nil . 1) (-1 . 1))
  5545. ((nil . 1) (1 . 1) (nil . 1))
  5546. ((1 . 1) (nil . 1) (nil . 1))))),'real)$
  5547. set!*available 's4$
  5548. set!*elems!*group('a4,
  5549. '(id ta4 t2a4 xa4 ya4 za4 txa4 tya4 tza4 t2xa4 t2ya4
  5550. t2za4))$
  5551. set!*generators('a4,'(ta4 xa4 ya4 za4))$
  5552. set!*relations('a4,
  5553. '(((za4) (ta4 xa4 ta4 ta4))
  5554. ((ya4) (ta4 za4 ta4 ta4))
  5555. ((xa4) (ta4 ya4 ta4 ta4))
  5556. ((ta4 ta4 ta4) (id))
  5557. ((xa4 xa4) (id))
  5558. ((ya4 ya4) (id))
  5559. ((za4 za4) (id))
  5560. ((xa4 ya4) (za4))))$
  5561. set!*grouptable('a4,
  5562. '((grouptable
  5563. id
  5564. ta4
  5565. t2a4
  5566. xa4
  5567. ya4
  5568. za4
  5569. txa4
  5570. tya4
  5571. tza4
  5572. t2xa4
  5573. t2ya4
  5574. t2za4)
  5575. (id id ta4 t2a4 xa4 ya4 za4 txa4 tya4 tza4 t2xa4
  5576. t2ya4 t2za4)
  5577. (ta4 ta4 t2a4 id txa4 tya4 tza4 t2xa4 t2ya4 t2za4 xa4
  5578. ya4 za4)
  5579. (t2a4
  5580. t2a4
  5581. id
  5582. ta4
  5583. t2xa4
  5584. t2ya4
  5585. t2za4
  5586. xa4
  5587. ya4
  5588. za4
  5589. txa4
  5590. tya4
  5591. tza4)
  5592. (xa4 xa4 tya4 t2za4 id za4 ya4 tza4 ta4 txa4 t2ya4
  5593. t2xa4 t2a4)
  5594. (ya4 ya4 tza4 t2xa4 za4 id xa4 tya4 txa4 ta4 t2a4
  5595. t2za4 t2ya4)
  5596. (za4 za4 txa4 t2ya4 ya4 xa4 id ta4 tza4 tya4 t2za4
  5597. t2a4 t2xa4)
  5598. (txa4
  5599. txa4
  5600. t2ya4
  5601. za4
  5602. ta4
  5603. tza4
  5604. tya4
  5605. t2za4
  5606. t2a4
  5607. t2xa4
  5608. ya4
  5609. xa4
  5610. id)
  5611. (tya4
  5612. tya4
  5613. t2za4
  5614. xa4
  5615. tza4
  5616. ta4
  5617. txa4
  5618. t2ya4
  5619. t2xa4
  5620. t2a4
  5621. id
  5622. za4
  5623. ya4)
  5624. (tza4
  5625. tza4
  5626. t2xa4
  5627. ya4
  5628. tya4
  5629. txa4
  5630. ta4
  5631. t2a4
  5632. t2za4
  5633. t2ya4
  5634. za4
  5635. id
  5636. xa4)
  5637. (t2xa4
  5638. t2xa4
  5639. ya4
  5640. tza4
  5641. t2a4
  5642. t2za4
  5643. t2ya4
  5644. za4
  5645. id
  5646. xa4
  5647. tya4
  5648. txa4
  5649. ta4)
  5650. (t2ya4
  5651. t2ya4
  5652. za4
  5653. txa4
  5654. t2za4
  5655. t2a4
  5656. t2xa4
  5657. ya4
  5658. xa4
  5659. id
  5660. ta4
  5661. tza4
  5662. tya4)
  5663. (t2za4
  5664. t2za4
  5665. xa4
  5666. tya4
  5667. t2ya4
  5668. t2xa4
  5669. t2a4
  5670. id
  5671. za4
  5672. ya4
  5673. tza4
  5674. ta4
  5675. txa4)))$
  5676. set!*inverse('a4,
  5677. '((id ta4 t2a4 xa4 ya4 za4 txa4 tya4 tza4 t2xa4 t2ya4 t2za4)
  5678. (id t2a4 ta4 xa4 ya4 za4 t2za4 t2xa4 t2ya4 tya4 tza4 txa4)
  5679. ))$
  5680. set!*elemasgen('a4,
  5681. '(((ta4) (ta4))
  5682. ((t2a4) (ta4 ta4))
  5683. ((xa4) (xa4))
  5684. ((ya4) (ya4))
  5685. ((za4) (za4))
  5686. ((txa4) (ta4 xa4))
  5687. ((tya4) (ta4 ya4))
  5688. ((tza4) (ta4 za4))
  5689. ((t2xa4) (ta4 ta4 xa4))
  5690. ((t2ya4) (ta4 ta4 ya4))
  5691. ((t2za4) (ta4 ta4 za4))))$
  5692. set!*group('a4,
  5693. '((id) (txa4 ta4 tza4 tya4) (t2za4 t2a4 t2ya4 t2xa4)
  5694. (ya4 xa4 za4)))$
  5695. set!*representation('a4,
  5696. '((id (((1 . 1))))
  5697. (ta4 (((1 . 1))))
  5698. (t2a4 (((1 . 1))))
  5699. (xa4 (((1 . 1))))
  5700. (ya4 (((1 . 1))))
  5701. (za4 (((1 . 1))))
  5702. (txa4 (((1 . 1))))
  5703. (tya4 (((1 . 1))))
  5704. (tza4 (((1 . 1))))
  5705. (t2xa4 (((1 . 1))))
  5706. (t2ya4 (((1 . 1))))
  5707. (t2za4 (((1 . 1))))),'complex)$
  5708. set!*representation('a4,
  5709. '((id (((1 . 1))))
  5710. (ta4
  5711. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5712. . -1)
  5713. . 2))))
  5714. (t2a4
  5715. (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
  5716. . -1)
  5717. . 2))))
  5718. (xa4 (((1 . 1))))
  5719. (ya4 (((1 . 1))))
  5720. (za4 (((1 . 1))))
  5721. (txa4
  5722. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5723. . -1)
  5724. . 2))))
  5725. (tya4
  5726. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5727. . -1)
  5728. . 2))))
  5729. (tza4
  5730. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5731. . -1)
  5732. . 2))))
  5733. (t2xa4
  5734. (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
  5735. . -1)
  5736. . 2))))
  5737. (t2ya4
  5738. (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
  5739. . -1)
  5740. . 2))))
  5741. (t2za4
  5742. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . -1))
  5743. . -1)
  5744. . 2))))),'complex)$
  5745. set!*representation('a4,
  5746. '((id (((1 . 1))))
  5747. (ta4
  5748. (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
  5749. . -1)
  5750. . 2))))
  5751. (t2a4
  5752. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5753. . -1)
  5754. . 2))))
  5755. (xa4 (((1 . 1))))
  5756. (ya4 (((1 . 1))))
  5757. (za4 (((1 . 1))))
  5758. (txa4
  5759. (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
  5760. . -1)
  5761. . 2))))
  5762. (tya4
  5763. (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
  5764. . -1)
  5765. . 2))))
  5766. (tza4
  5767. (((((((expt 3 (quotient 1 2)) . 1)((i . 1) . -1))
  5768. . -1)
  5769. . 2))))
  5770. (t2xa4
  5771. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5772. . -1)
  5773. . 2))))
  5774. (t2ya4
  5775. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5776. . -1)
  5777. . 2))))
  5778. (t2za4
  5779. (((((((expt 3 (quotient 1 2)) . 1) ((i . 1) . 1))
  5780. . -1)
  5781. . 2))))),'complex)$
  5782. set!*representation('a4,
  5783. '((id
  5784. (((1 . 1) (nil . 1) (nil . 1))
  5785. ((nil . 1) (1 . 1) (nil . 1))
  5786. ((nil . 1) (nil . 1) (1 . 1))))
  5787. (ta4
  5788. (((nil . 1) (nil . 1) (-1 . 1))
  5789. ((-1 . 1) (nil . 1) (nil . 1))
  5790. ((nil . 1) (1 . 1) (nil . 1))))
  5791. (t2a4
  5792. (((nil . 1) (-1 . 1) (nil . 1))
  5793. ((nil . 1) (nil . 1) (1 . 1))
  5794. ((-1 . 1) (nil . 1) (nil . 1))))
  5795. (xa4
  5796. (((-1 . 1) (nil . 1) (nil . 1))
  5797. ((nil . 1) (1 . 1) (nil . 1))
  5798. ((nil . 1) (nil . 1) (-1 . 1))))
  5799. (ya4
  5800. (((1 . 1) (nil . 1) (nil . 1))
  5801. ((nil . 1) (-1 . 1) (nil . 1))
  5802. ((nil . 1) (nil . 1) (-1 . 1))))
  5803. (za4
  5804. (((-1 . 1) (nil . 1) (nil . 1))
  5805. ((nil . 1) (-1 . 1) (nil . 1))
  5806. ((nil . 1) (nil . 1) (1 . 1))))
  5807. (txa4
  5808. (((nil . 1) (nil . 1) (1 . 1))
  5809. ((1 . 1) (nil . 1) (nil . 1))
  5810. ((nil . 1) (1 . 1) (nil . 1))))
  5811. (tya4
  5812. (((nil . 1) (nil . 1) (1 . 1))
  5813. ((-1 . 1) (nil . 1) (nil . 1))
  5814. ((nil . 1) (-1 . 1) (nil . 1))))
  5815. (tza4
  5816. (((nil . 1) (nil . 1) (-1 . 1))
  5817. ((1 . 1) (nil . 1) (nil . 1))
  5818. ((nil . 1) (-1 . 1) (nil . 1))))
  5819. (t2xa4
  5820. (((nil . 1) (-1 . 1) (nil . 1))
  5821. ((nil . 1) (nil . 1) (-1 . 1))
  5822. ((1 . 1) (nil . 1) (nil . 1))))
  5823. (t2ya4
  5824. (((nil . 1) (1 . 1) (nil . 1))
  5825. ((nil . 1) (nil . 1) (-1 . 1))
  5826. ((-1 . 1) (nil . 1) (nil . 1))))
  5827. (t2za4
  5828. (((nil . 1) (1 . 1) (nil . 1))
  5829. ((nil . 1) (nil . 1) (1 . 1))
  5830. ((1 . 1) (nil . 1) (nil . 1))))),'complex)$
  5831. set!*representation('a4,
  5832. '(realtype
  5833. (id (((1 . 1))))
  5834. (ta4 (((1 . 1))))
  5835. (t2a4 (((1 . 1))))
  5836. (xa4 (((1 . 1))))
  5837. (ya4 (((1 . 1))))
  5838. (za4 (((1 . 1))))
  5839. (txa4 (((1 . 1))))
  5840. (tya4 (((1 . 1))))
  5841. (tza4 (((1 . 1))))
  5842. (t2xa4 (((1 . 1))))
  5843. (t2ya4 (((1 . 1))))
  5844. (t2za4 (((1 . 1))))),'real)$
  5845. set!*representation('a4,
  5846. '(complextype
  5847. (id (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5848. (ta4
  5849. (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . 1))
  5850. . 2))
  5851. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5852. (-1 . 2))))
  5853. (t2a4
  5854. (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
  5855. . 2))
  5856. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
  5857. (-1 . 2))))
  5858. (xa4 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5859. (ya4 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5860. (za4 (((1 . 1) (nil . 1)) ((nil . 1) (1 . 1))))
  5861. (txa4
  5862. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1))
  5863. . 2))
  5864. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5865. (-1 . 2))))
  5866. (tya4
  5867. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1))
  5868. . 2))
  5869. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5870. (-1 . 2))))
  5871. (tza4
  5872. (((-1 . 2) (((((expt 3 (quotient 1 2)) . 1) . 1))
  5873. . 2))
  5874. ((((((expt 3 (quotient 1 2)) . 1) . -1)) . 2)
  5875. (-1 . 2))))
  5876. (t2xa4
  5877. (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
  5878. . 2))
  5879. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
  5880. (-1 . 2))))
  5881. (t2ya4
  5882. (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
  5883. . 2))
  5884. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
  5885. (-1 . 2))))
  5886. (t2za4
  5887. (((-1 . 2)(((((expt 3 (quotient 1 2)) . 1) . -1))
  5888. . 2))
  5889. ((((((expt 3 (quotient 1 2)) . 1) . 1)) . 2)
  5890. (-1 . 2))))),'real)$
  5891. set!*representation('a4,
  5892. '(realtype
  5893. (id
  5894. (((1 . 1) (nil . 1) (nil . 1))
  5895. ((nil . 1) (1 . 1) (nil . 1))
  5896. ((nil . 1) (nil . 1) (1 . 1))))
  5897. (ta4
  5898. (((nil . 1) (nil . 1) (-1 . 1))
  5899. ((-1 . 1) (nil . 1) (nil . 1))
  5900. ((nil . 1) (1 . 1) (nil . 1))))
  5901. (t2a4
  5902. (((nil . 1) (-1 . 1) (nil . 1))
  5903. ((nil . 1) (nil . 1) (1 . 1))
  5904. ((-1 . 1) (nil . 1) (nil . 1))))
  5905. (xa4
  5906. (((-1 . 1) (nil . 1) (nil . 1))
  5907. ((nil . 1) (1 . 1) (nil . 1))
  5908. ((nil . 1) (nil . 1) (-1 . 1))))
  5909. (ya4
  5910. (((1 . 1) (nil . 1) (nil . 1))
  5911. ((nil . 1) (-1 . 1) (nil . 1))
  5912. ((nil . 1) (nil . 1) (-1 . 1))))
  5913. (za4
  5914. (((-1 . 1) (nil . 1) (nil . 1))
  5915. ((nil . 1) (-1 . 1) (nil . 1))
  5916. ((nil . 1) (nil . 1) (1 . 1))))
  5917. (txa4
  5918. (((nil . 1) (nil . 1) (1 . 1))
  5919. ((1 . 1) (nil . 1) (nil . 1))
  5920. ((nil . 1) (1 . 1) (nil . 1))))
  5921. (tya4
  5922. (((nil . 1) (nil . 1) (1 . 1))
  5923. ((-1 . 1) (nil . 1) (nil . 1))
  5924. ((nil . 1) (-1 . 1) (nil . 1))))
  5925. (tza4
  5926. (((nil . 1) (nil . 1) (-1 . 1))
  5927. ((1 . 1) (nil . 1) (nil . 1))
  5928. ((nil . 1) (-1 . 1) (nil . 1))))
  5929. (t2xa4
  5930. (((nil . 1) (-1 . 1) (nil . 1))
  5931. ((nil . 1) (nil . 1) (-1 . 1))
  5932. ((1 . 1) (nil . 1) (nil . 1))))
  5933. (t2ya4
  5934. (((nil . 1) (1 . 1) (nil . 1))
  5935. ((nil . 1) (nil . 1) (-1 . 1))
  5936. ((-1 . 1) (nil . 1) (nil . 1))))
  5937. (t2za4
  5938. (((nil . 1) (1 . 1) (nil . 1))
  5939. ((nil . 1) (nil . 1) (1 . 1))
  5940. ((1 . 1) (nil . 1) (nil . 1))))),'real)$
  5941. set!*available 'a4$
  5942. end;