import ĠTests . Rel ator . Companion . determine Root Position Ċ import ĠVector . Companion . EPS Ċ import Ġorg . junit . Test Ċ Ċ import Ġjava . util . Arrays Ċ import Ġjava . util . HashMap Ċ import Ġkotlin . math . round ToInt ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġuser Ġon Ġ 6 / 1 5 / 1 7 . Ċ Ġ*/ Ċ Ċ class ĠTests Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest SN F Computer () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk Ġ= ĠarrayOf ( long ArrayOf ( 4 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong ArrayOf ( 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong ArrayOf ( 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong ArrayOf ( 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong ArrayOf ( 0 , Ġ 0 , Ġ 0 , Ġ 0 , Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġim Ġ= ĠInteger Matrix ( k ) ĊĠĠĠĠĠĠĠ Ġval Ġcomputer Ġ= ĠInteger Matrix . SN F Computer ( im ) ĊĠĠĠĠĠĠĠ Ġcomputer . do Compute SN F () ĊĠĠĠĠĠĠĠ Ġprintln ( Arrays . toString ( computer . s . get Diag onal Entries ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Inverse () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠMatrix . random ( 4 , Ġ 5 . 0 , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġmi Ġ= Ġm . inverse () ĊĠĠĠĠĠĠĠ Ġprintln ( m ) ĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠ Ġprintln ( mi ) ĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠ Ġprintln ( m . mul ( mi )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġweight L attice NF () Ġ{ Ġ/* Ġcan Ġdetermine Ġif Ġweights Ġof Ġa Ġrepresentation Ġspan Ġthe Ġwhole Ġweight Ġlattice Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġbr s Ġ= ĠBased Root System ( Root Systems . e 6 base . my C oo ) ĊĠĠĠĠĠĠĠ Ġval Ġweight Diagram Ġ= ĠWeight Diagram ( br s , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Long Array >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( w Ġin Ġweight Diagram . my Weights Ordered ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( br s . fund amental Weight Co e ffic ents ( w ). map Ġ{ Ġit . to Long () Ġ}. to Long Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġinteger Matrix Ġ= ĠInteger Matrix ( list . to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġval Ġsm ith Form Ġ= ĠInteger Matrix . SN F Computer ( integer Matrix ) ĊĠĠĠĠĠĠĠ Ġsm ith Form . do Compute SN F () ĊĠĠĠĠĠĠĠ ĠSystem . out . println ( smith Form . s . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠRel ator ( val Ġbr s : ĠBased Root System , Ġval Ġa : ĠVector , Ġval Ġb : ĠVector , Ġval Ġeps A : ĠInt , Ġval Ġeps B : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other Ġis ĠRel ator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other . a Ġ== Ġa Ġ&& Ġother . b Ġ== Ġb Ġ&& Ġother . eps A Ġ== Ġeps A Ġ&& Ġother . eps B Ġ== Ġeps B ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other . a Ġ== Ġb Ġ&& Ġother . b Ġ== Ġa Ġ&& Ġother . eps A Ġ== Ġeps B Ġ&& Ġother . eps B Ġ== Ġeps A ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Code Ġ= Ġa . hashCode () Ġ* Ġ 3 1 Ġ+ Ġeps A . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Code Ġ= Ġb . hashCode () Ġ* Ġ 3 1 Ġ+ Ġeps B . hashCode () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġa Code Ġxor Ġb Code ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠArrays . toString ( br s . simple Root Coefficient s ( a )) Ġ+ Ġ"=" Ġ+ Ġthis . eps A Ġ+ Ġ" Ġ/ Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . toString ( br s . simple Root Coefficient s ( b )) Ġ+ Ġ"=" Ġ+ Ġthis . eps B ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġwhen Ġ( determine Root Position ( br s , Ġa , Ġb )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" 2 a Ġ+ Ġb Ġis Ġa Ġroot " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ" a Ġ+ Ġ 2 b Ġis Ġa Ġroot " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ" a Ġ+ Ġb Ġis Ġa Ġroot " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" a Ġ+ Ġb Ġis Ġnot Ġa Ġroot " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"$ result Ġ$ position " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġdetermine Root Position ( br s : ĠBased Root System , Ġalpha : ĠVector , Ġbeta : ĠVector ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsum Ġ= ĠVector . add ( alpha , Ġbeta ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( br s . my Root Set . contains ( sum )) Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr s . my Root Set . contains ( Vector . add ( sum , Ġalpha )) Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr s . my Root Set . contains ( Vector . add ( sum , Ġbeta )) Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcom mut ing Weights () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbr s Ġ= ĠBased Root System ( Root Systems . e 6 base . my C oo ) ĊĠĠĠĠĠĠĠ Ġval Ġrel ators Ġ= ĠHashSet < Rel ator >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( alpha Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( beta Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( alpha Ġ!= ĠVector . minus ( beta ) Ġ&& Ġalpha Ġ!= Ġbeta ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( epsilon Alpha Ġin Ġ 0 .. 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( epsilon Beta Ġin Ġ 0 .. 1 ) Ġif Ġ( epsilon Alpha Ġ> Ġ 0 Ġ|| Ġepsilon Beta Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// determine Ġroot Ġstring ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġdetermine Root Position ( br s , Ġalpha , Ġbeta ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeps Sum Ġ= Ġepsilon Alpha Ġ+ Ġepsilon Beta ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġepsilon Condition Ġ= Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġepsilon Alpha Ġ+ Ġeps Sum Ġ<= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġepsilon Beta Ġ+ Ġeps Sum Ġ<= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġeps Sum Ġ<= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( epsilon Condition ) Ġrel ators . add ( Rel ator ( br s , Ġalpha , Ġbeta , Ġepsilon Alpha , Ġepsilon Beta )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// for Ġ( rel ator Ġin Ġrel ators ) ĠSystem . out . println ( rel ator . toString ()) ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġ 5 ĊĠĠĠĠĠĠĠ Ġval Ġfw Ġ= Ġbr s . my C owe ights . my C oo [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġre fl Ġ= Ġbr s . simple Reflection s [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠHashSet < Vector >() ĊĠĠĠĠĠĠĠ Ġset . add ( Vector ( fw )) ĊĠĠĠĠĠĠĠ Ġset . add ( Vector ( ref l . mul ( Vector ( fw )))) ĊĊĠĠĠĠĠĠĠ Ġ/* Ġval Ġw ey l Group Ġ= ĠW ey l Group ( br s . my Basis , Ġ 1 0 0 0 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġs set Ġ= ĠHashSet < Set < Vector >>() ĊĠĠĠĠĠĠĠ Ġfor Ġ( wg Ġin Ġw ey l Group . carrier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs set . add ( set . map Ġ{ Ġwg . mul ( it ) Ġ}. to HashSet ()) Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġval Ġs set Ġ= Ġbr s . weight Multi Orbit ( set ) ĊĊĠĠĠĠĠĠĠ ĠSystem . out . println (" There Ġis Ġ${ s set . size } Ġpairs Ġof Ġweights ") ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( rel ator Ġin Ġrel ators ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . print (" Testing ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfound Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( com mut ing Pair Ġin Ġs set ) Ġ{ Ġ// Ġpair Ġof Ġc owe ights ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Pair Ġ= Ġcom mut ing Pair . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( c Pair . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc P 0 Ġ= Ġc Pair [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc P 1 Ġ= Ġc Pair [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa Ġ= ĠVector . prod ( c P 0 , Ġrel ator . a ) Ġ+ ĠVector . prod ( c P 1 , Ġrel ator . a ) Ġ+ Ġrel ator . eps A ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠVector . prod ( c P 0 , Ġrel ator . b ) Ġ+ ĠVector . prod ( c P 1 , Ġrel ator . b ) Ġ+ Ġrel ator . eps B ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġa I Ġ= Ġa . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb I Ġ= Ġb . round ToInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloss Of Precision Ġ= Ġ( Math . abs ( a I Ġ- Ġa ) Ġ>= ĠEPS ) Ġ|| Ġ( Math . abs ( b I Ġ- Ġb ) Ġ>= ĠEPS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( loss Of Precision ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" Loss Ġof Ġprecision ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( a I Ġ<= Ġ 0 Ġ&& Ġb I Ġ<= Ġ 0 Ġ&& Ġ! loss Of Precision ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" ok ; Ġ${ rel ator } Ġ${ rel ator . eps A } Ġ-> Ġ$ a I ; Ġ${ rel ator . eps B } Ġ-> Ġ$ b I ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! found ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" failed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" a :${ Arrays . toString ( br s . simple Root Coefficient s ( rel ator . a )) }, Ġeps A :${ rel ator . eps A } Ġb :${ Arrays . toString ( br s . simple Root Coefficient s ( rel ator . b ))} Ġeps B :${ rel ator . eps B }; Ġrelation Ġtype : Ġ$ rel ator ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdraw Hyper Cube () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġval Ġbr s Ġ= ĠBased Root System ( Root Systems . cl base ( 4 ). my C oo ) ĊĠĠĠĠĠĠĠ Ġval Ġweight Diagram Ġ= ĠWeight Diagram ( br s , Ġi ) ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= ĠHashMap < Vector , ĠSet < Vector >>() ĊĠĠĠĠĠĠĠ Ġfor Ġ( w Ġin Ġweight Diagram . my Weights ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn E lems Ġ= ĠHashSet < Vector >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġbr s . my Root Set ) Ġif Ġ( Vector . prod ( r , Ġw ) Ġ>= Ġ 0 ) Ġn E lems . add ( r ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm [ w ] Ġ= Ġn E lems ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfw Ġ= Ġbr s . my Fund amental Weights . my C oo [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġre fl Ġ= Ġbr s . simple Reflection s [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠHashSet < Vector >() ĊĠĠĠĠĠĠĠ Ġset . add ( Vector ( fw )) ĊĠĠĠĠĠĠĠ Ġset . add ( Vector ( ref l . mul ( Vector ( fw )))) ĊĊĠĠĠĠĠĠĠ Ġval Ġw ey l Group Ġ= ĠW ey l Group ( br s . my Basis , Ġ 4 0 0 0 , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġs set Ġ= ĠHashSet < Set < Vector >>() ĊĠĠĠĠĠĠĠ Ġfor Ġ( wg Ġin Ġw ey l Group . carrier ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs set . add ( set . map Ġ{ Ġwg . mul ( it ) Ġ}. to HashSet ()) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( orb Ġin Ġs set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( w Ġin Ġor b ) ĠSystem . out . print ("$ w Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSystem . out . println ( s set . size ) ĊĊĠĠĠĠĠĠĠ ĠSystem . out . print (" graph . add Edges (" ) ĊĠĠĠĠĠĠĠ Ġs set . toList (). map Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit arr Ġ= Ġit . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . print (" [' w " Ġ+ Ġweight Diagram . my Weights Numbers [ it arr [ 0 ]] Ġ+ Ġ"', Ġ' w " Ġ+ Ġweight Diagram . my Weights Numbers [ it arr [ 1 ]] Ġ+ Ġ" '] ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġs set . size Ġ- Ġ 1 ) ĠSystem . out . print (", Ġ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠSystem . out . println (" )") ĊĊĠĠĠĠĠĠĠ ĠSystem . out . println ( Arrays . toString ( fw )) ĊĠĠĠĠĠĠĠ ĠSystem . out . println ( Arrays . toString ( ref l . mul ( Vector ( fw )). my C oo )) ĊĠĠĠĠĠĠĠ Ġweight Diagram . print Spring y () ĊĊĊĠĠĠĠĠĠĠ Ġfor Ġ( w Ġin Ġweight Diagram . my Weights ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( w 2 Ġin Ġweight Diagram . my Weights ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( br s . my Positive Roots . minus ( m [ w ] !!. intersect ( m [ w 2 ] !! )). size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println ( w . toString () Ġ+ Ġ" Ġ" Ġ+ ĠArrays . toString ( br s . fund amental Weight Co e ffic ents ( w )) Ġ+ Ġ"; Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw 2 Ġ+ Ġ" Ġ" Ġ+ ĠArrays . toString ( br s . fund amental Weight Co e ffic ents ( w 2 ))) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġlemma 5 6 ( base : ĠMatrix , Ġhighest Weight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbr s Ġ= ĠBased Root System ( base . my C oo ) ĊĠĠĠĠĠĠĠ Ġval Ġwd Ġ= ĠWeight Diagram ( br s , Ġhighest Weight ) ĊĠĠĠĠĠĠĠ ĠSystem . out . println (" Number Ġof Ġvertices : Ġ" Ġ+ Ġwd . my Weights . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( alpha Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( lambda Ġin Ġwd . my Weights ) Ġ// Ġnon zero Ġ&& Ġlambda Ġ+ Ġalpha Ġ-- Ġalso Ġnon zero ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wd . my Weights . contains ( Vector . add ( alpha , Ġlambda ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( wd . c ( lambda , Ġalpha ) Ġ== Ġwd . c ( Vector . add ( lambda , Ġalpha ), ĠVector . minus ( alpha ))) ĊĠĠĠĠĠĠĠ Ġfor Ġ( alpha Ġin Ġbr s . my Fund amental Roots ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( beta Ġin Ġbr s . my Fund amental Roots ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( lambda Ġin Ġwd . my Weights ) Ġ// TODO : Ġcan Ġbe Ġzero ... ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wd . my Weights . contains ( Vector . add ( alpha , Ġlambda )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwd . my Weights . contains ( Vector . add ( beta , Ġlambda )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwd . my Weights . contains ( Vector . add ( Vector . add ( alpha , Ġbeta ), Ġlambda ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( wd . c ( lambda , Ġalpha ) Ġ* Ġwd . c ( Vector . add ( lambda , Ġalpha ), Ġbeta ) Ġ== ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwd . c ( lambda , Ġbeta ) Ġ* Ġwd . c ( Vector . add ( lambda , Ġbeta ), Ġalpha )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest N ( base : ĠMatrix , Ġhighest Weight : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbr s Ġ= ĠBased Root System ( base . my C oo ) ĊĠĠĠĠĠĠĠ Ġval Ġwd Ġ= ĠWeight Diagram ( br s , Ġhighest Weight ) ĊĊĠĠĠĠĠĠĠ Ġval Ġxa 1 Ġ= ĠHashMap < Vector , ĠMatrix >() ĊĠĠĠĠĠĠĠ Ġval Ġx am 1 Ġ= ĠHashMap < Vector , ĠMatrix >() ĊĠĠĠĠĠĠĠ Ġval ĠN Ġ= ĠHashMap < Pair < Vector , ĠVector >, ĠInt >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġbr s . my Root Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxa 1 [ v ] Ġ= Ġwd . x ( v , Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġx am 1 [ v ] Ġ= Ġwd . x ( v , Ġ- 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġ( br s . root Height ( v ) Ġ== Ġ 1 ) Ġ{ Ġprintln ( xa 1 [ v ]) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfor Ġ( a Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( b Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( br s . my Root Set . contains ( Vector . add ( a , Ġb ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm 1 Ġ= Ġxa 1 [ a ] !!. mul ( xa 1 [ b ] !! ). mul ( x am 1 [ a ] !!. mul ( x am 1 [ b ] !! )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( m 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxa 1 [ Vector . add ( a , Ġb )] Ġ-> ĠN [ Pair ( a , Ġb )] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġx am 1 [ Vector . add ( a , Ġb )] Ġ-> ĠN [ Pair ( a , Ġb )] Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Can 't Ġcompute ĠN Ġfor Ġ" Ġ+ ĠArrays . toString ( br s . simple Root Coefficient s ( a )) Ġ+ Ġ", Ġ" Ġ+ ĠArrays . toString ( br s . simple Root Coefficient s ( b ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException () Ġ// TODO : ĠImplement Ġcomputation Ġof ĠN 's Ġfor Ġnon - simp ly - l aced Ġroot Ġsystems ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( alpha Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( beta Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( br s . my Root Set . contains ( Vector . add ( alpha , Ġbeta ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( gamma Ġin Ġbr s . my Root Set ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( br s . my Root Set . contains ( Vector . add ( beta , Ġgamma )) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbr s . my Root Set . contains ( Vector . add ( alpha , ĠVector . add ( beta , Ġgamma )))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( Math . abs ( N [ Pair ( beta , Ġgamma )] !! Ġ* ĠN [ Pair ( alpha , ĠVector . add ( beta , Ġgamma ))] !! Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠN [ Pair ( Vector . add ( alpha , Ġbeta ), Ġgamma )] !! Ġ* ĠN [ Pair ( alpha , Ġbeta )] !! ) Ġ< ĠEPS ) Ġ// Ġtest SN F Computer Ġformula Ġ( 6 ) Ġpage Ġ 9 Ġ-- Ġonly Ġfor Ġsimply - l aced Ġroot Ġsystems ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgamma Ġ= ĠVector . minus ( Vector . add ( alpha , Ġbeta )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtest SN F Computer Ġformula Ġ( 1 ) Ġpage Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( N [ Pair ( alpha , Ġbeta )] !! Ġ== ĠN [ Pair ( Vector . minus ( beta ), ĠVector . minus ( alpha ))] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( N [ Pair ( alpha , Ġbeta )] !! Ġ== Ġ- N [ Pair ( Vector . minus ( alpha ), ĠVector . minus ( beta ))] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( N [ Pair ( alpha , Ġbeta )] !! Ġ== Ġ- N [ Pair ( beta , Ġalpha )] !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtest SN F Computer Ġformula Ġ( 2 ) Ġpage Ġ 8 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( Math . abs ( N [ Pair ( alpha , Ġbeta )] !!. toDouble () Ġ/ ĠVector . len 2 ( gamma ) Ġ- ĠN [ Pair ( beta , Ġgamma )] !!. toDouble () Ġ/ ĠVector . len 2 ( alpha )) Ġ< ĠEPS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( Math . abs ( N [ Pair ( alpha , Ġbeta )] !!. toDouble () Ġ/ ĠVector . len 2 ( gamma ) Ġ- ĠN [ Pair ( gamma , Ġalpha )] !!. toDouble () Ġ/ ĠVector . len 2 ( beta )) Ġ< ĠEPS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Closed ( rs : ĠBased Root System , Ġroots : ĠSet < Vector >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Vector >( roots ) ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġlist . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġi Ġ+ Ġ 1 Ġuntil Ġlist . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠVector . add ( list [ i ], Ġlist [ j ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rs . my Root Set . contains ( v ) Ġ&& Ġ! roots . contains ( v )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc oo i Ġ= ĠArrays . toString ( rs . simple Root Coefficient s ( list [ i ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc oo j Ġ= ĠArrays . toString ( rs . simple Root Coefficient s ( list [ j ])) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc oo v Ġ= ĠArrays . toString ( rs . simple Root Coefficient s ( v )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println ("$ co oi Ġ$ co oj Ġ$ co ov ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Dl () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd 5 Ġ= ĠBased Root System ( Root Systems . dl base ( 5 ). my C oo ) ĊĠĠĠĠĠĠĠ Ġval Ġroot 1 Ġ= Ġd 5 . my Fund amental Roots [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġdependent Roots Ġ= ĠHashSet < Vector >() ĊĠĠĠĠĠĠĠ Ġdependent Roots . add ( Vector . minus ( root 1 )) ĊĠĠĠĠĠĠĠ Ġdependent Roots . add ( root 1 ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġd 5 . my Root Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= ĠVector . add ( r , Ġroot 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d 5 . my Root Set . contains ( v )) Ġdependent Roots . add ( v ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġother Roots Ġ= Ġd 5 . my Root Set . minus ( dependent Roots ). as Sequence (). toSet () ĊĊĠĠĠĠĠĠĠ ĠSystem . out . println ( is Closed ( d 5 , Ġother Roots )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsingle Difference Experiment ( name : ĠString , Ġbr s : ĠBased Root System ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġbr s . my Fund amental Roots . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġui Ġ= ĠHashSet < Vector >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( root Ġin Ġbr s . my Root Set ) Ġif Ġ( br s . simple Root Coefficient s ( root )[ i ] Ġ> Ġ 0 ) Ġui . add ( root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexperiment Result Ġ= ĠUtils . subtract Closure ( ui , Ġbr s ). size Ġ== Ġbr s . my Root Set . size ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" Root System : Ġ$ name Ġi =$ i , Ġresult =$ experiment Result ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdifference Experiment (){ ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" A 2 ", ĠBased Root System ( Root Systems . al base ( 2 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" A 3 ", ĠBased Root System ( Root Systems . al base ( 3 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" A 4 ", ĠBased Root System ( Root Systems . al base ( 4 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" A 5 ", ĠBased Root System ( Root Systems . al base ( 5 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" A 6 ", ĠBased Root System ( Root Systems . al base ( 6 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" A 7 ", ĠBased Root System ( Root Systems . al base ( 7 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" D 4 ", ĠBased Root System ( Root Systems . dl base ( 4 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" D 5 ", ĠBased Root System ( Root Systems . dl base ( 5 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" B 4 ", ĠBased Root System ( Root Systems . bl base ( 4 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" B 5 ", ĠBased Root System ( Root Systems . bl base ( 5 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" C 4 ", ĠBased Root System ( Root Systems . cl base ( 4 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" C 5 ", ĠBased Root System ( Root Systems . cl base ( 5 ). my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" E 6 ", ĠBased Root System ( Root Systems . e 6 base . my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" E 7 ", ĠBased Root System ( Root Systems . e 7 base . my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" E 8 ", ĠBased Root System ( Root Systems . e 8 base . my C oo )) ĊĠĠĠĠĠĠĠ Ġsingle Difference Experiment (" F 4 ", ĠBased Root System ( Root Systems . f 4 base . my C oo )) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest L em ma 5 6 () Ġ{ ĊĠĠĠĠĠĠĠ Ġlemma 5 6 ( Root Systems . al base ( 3 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġlemma 5 6 ( Root Systems . al base ( 4 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġlemma 5 6 ( Root Systems . dl base ( 4 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġlemma 5 6 ( Root Systems . e 6 base , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġlemma 5 6 ( Root Systems . e 7 base , Ġ 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Structure Constants () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest N ( Root Systems . al base ( 3 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest N ( Root Systems . al base ( 4 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest N ( Root Systems . dl base ( 4 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest N ( Root Systems . e 6 base , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest N ( Root Systems . e 7 base , Ġ 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Cur tis T its (){ ĊĠĠĠĠĠĠĠ Ġval Ġrs Ġ= ĠBased Root System ( Root Systems . f 4 base . my C oo ) ĊĠĠĠĠĠĠĠ Ġfun Ġcalculate Span ( a : ĠVector , Ġb Ġ: ĠVector ): ĠMutable Set < Vector > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠHashSet < Vector >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( a ); Ġset . add ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . reflect Closure ( set ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġset ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġoccupied Roots Ġ= ĠHashSet < Vector >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( a Ġin Ġrs . my Fund amental Roots ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( b Ġin Ġrs . my Fund amental Roots ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoccupied Roots . addAll ( calculate Span ( a , Ġb )) ĊĊĠĠĠĠĠĠĠ Ġval Ġdifference Ġ= Ġrs . my Root Set . minus ( occup ied Roots ) ĊĠĠĠĠĠĠĠ Ġval Ġsizes Ġ= ĠHashSet < Pair < Int , ĠSet < Boolean >> >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( d Ġin Ġdifference ) Ġfor Ġ( c Ġin Ġdifference ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġcalculate Span ( c , Ġd ). size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= ĠHashSet < Boolean >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ== Ġ 6 Ġ|| Ġs Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl . add ( rs . is Long ( c )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl . add ( rs . is Long ( d )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsizes . add ( Pair ( s , Ġl )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġsizes ) Ġprint ("$ s , Ġ") ĊĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠ Ġprintln (" CT - presentation Ġroots : Ġ${ occup ied Roots . size } Ġout Ġout Ġof Ġ${ rs . my Root Set . size }") ĊĠĠĠ Ġ} Ċ Ċ } Ċ