1#############################################################################
2##
3#W  eigenv.gd            Algebraic Graph Theory package        Rhys J. Evans
4##
5##
6#Y  Copyright (C) 2020
7##
8##  Declaration file for functions involving eigenvalues of graphs.
9##
10
11
12#############################################################################
13##
14#O  LeastEigenvalueInterval( <gamma> , <eps> )
15#O  LeastEigenvalueInterval( <parms> , <eps> )
16##
17##  <#GAPDoc Label="LeastEigenvalueInterval">
18##  <ManSection>
19##  <Oper Name="LeastEigenvalueInterval"
20##   Arg="gamma, eps"/>
21##  <Oper Name="LeastEigenvalueInterval"
22##   Arg="parms, eps" Label="for SRG parameters"/>
23##  <Returns>A list.</Returns>
24##
25##  <Description>
26##  Given a graph <A>gamma</A> and rational number <A>eps</A>, this function
27##  returns an interval containing the least eigenvalue of <A>gamma</A>.
28##  <P/>
29##  Given feasible strongly regular graph parameters <A>parms</A> and rational
30##  number <A>eps</A>, this function returns an interval containing the least
31##  eigenvalue of a strongly regular graph with parameters <A>parms</A>.
32##  <P/>
33##  The interval returned is in the form of a list, <A>[y,z]</A> of rationals
34##  <M><A>y</A>\leq <A>z</A></M> with the property that
35##  <M><A>z</A>-<A>y</A>\leq <A>eps</A></M>. If the eigenvalue is rational this
36##  function will return a list <A>[y,z]</A>, where <M><A>y</A>=<A>z</A></M>.
37##    <Example>
38##      <![CDATA[
39##gap> gamma:=EdgeOrbitsGraph(Group((1,2,3,4,5)),[[1,2],[2,1]]);;
40##gap> LeastEigenvalueInterval(gamma,1/10);
41##[ -13/8, -25/16 ]
42##gap> parms:=SRGParameters(gamma);
43##[ 5, 2, 0, 1 ]
44##gap> LeastEigenvalueInterval(parms,1/10);
45##[ -13/8, -25/16 ]
46##gap> LeastEigenvalueInterval(JohnsonGraph(7,3),1/20);
47##[ -3, -3 ]
48##      ]]>
49##    </Example>
50##  </Description>
51##  </ManSection>
52##  <#/GAPDoc>
53##
54DeclareOperation( "LeastEigenvalueInterval", [IsRecord, IsRat] );
55DeclareOperation( "LeastEigenvalueInterval",  [IsList, IsRat]  );
56
57#############################################################################
58##
59#O  SecondEigenvalueInterval( <gamma> , <eps> )
60#O  SecondEigenvalueInterval( <parms> , <eps> )
61##
62##  <#GAPDoc Label="SecondEigenvalueInterval">
63##  <ManSection>
64##  <Oper Name="SecondEigenvalueInterval"
65##   Arg="gamma, eps"/>
66##  <Oper Name="SecondEigenvalueInterval"
67##   Arg="parms, eps" Label="for SRG parameters"/>
68##  <Returns>A list.</Returns>
69##
70##  <Description>
71##  Given a regular graph <A>gamma</A> and rational number <A>eps</A>, this
72##  function returns an interval containing the second largest eigenvalue
73##  of <A>gamma</A>.
74##  <P/>
75##  Given feasible strongly regular graph parameters <A>parms</A> and
76##  rational number <A>eps</A>, this function returns an interval containing
77##  the second largest  eigenvalue of a strongly regular graph with
78##  parameters <A>parms</A>.
79##  <P/>
80##  The interval returned is in the form of a list, <A>[y,z]</A> of rationals
81##  <M><A>y</A>\leq <A>z</A></M> with the property that
82##  <M><A>z</A>-<A>y</A>\leq <A>eps</A></M>. If the eigenvalue is rational this
83##  function will return a list <A>[y,z]</A>, where
84##  <M><A>y</A>=<A>z</A></M>.
85##    <Example>
86##      <![CDATA[
87##gap> gamma:=EdgeOrbitsGraph(Group((1,2,3,4,5)),[[1,2],[2,1]]);;
88##gap> SecondEigenvalueInterval(gamma,1/10);
89##[ 9/16, 5/8 ]
90##gap> parms:=SRGParameters(gamma);
91##[ 5, 2, 0, 1 ]
92##gap> SecondEigenvalueInterval(parms,1/10);
93##[ 9/16, 5/8 ]
94##gap> SecondEigenvalueInterval(JohnsonGraph(7,3),1/20);
95##[ 5, 5 ]
96##      ]]>
97##    </Example>
98##  </Description>
99##  </ManSection>
100##  <#/GAPDoc>
101##
102DeclareOperation( "SecondEigenvalueInterval" , [IsRecord, IsRat]);
103DeclareOperation( "SecondEigenvalueInterval" , [IsList, IsRat] );
104
105#############################################################################
106##
107#F  LeastEigenvalueFromSRGParameters( [ <v>, <k>, <a>, <b> ] )
108##
109##  <#GAPDoc Label="LeastEigenvalueFromSRGParameters">
110##  <ManSection>
111##  <Func Name="LeastEigenvalueFromSRGParameters"
112##   Arg='[ v, k, a, b ]'/>
113##  <Returns>An integer or an element of a cyclotomic field.</Returns>
114##
115##  <Description>
116##  Given feasible strongly regular graph parameters <A>[v, k, a, b]</A>
117##  this function returns the least eigenvalue of a strongly regular graph
118##  with parameters <M>(<A>v,k,a,b</A>)</M>. If the eigenvalue is integer, the
119##  object returned is an integer. If the eigenvalue is irrational, the object
120##  returned lies in a cyclotomic field.
121##    <Example>
122##      <![CDATA[
123##gap> LeastEigenvalueFromSRGParameters([5,2,0,1]);
124##E(5)^2+E(5)^3
125##gap> LeastEigenvalueFromSRGParameters([10,3,0,1]);
126##-2
127##      ]]>
128##    </Example>
129##  </Description>
130##  </ManSection>
131##  <#/GAPDoc>
132##
133DeclareGlobalFunction( "LeastEigenvalueFromSRGParameters" );
134
135#############################################################################
136##
137#F  SecondEigenvalueFromSRGParameters( [ <v>, <k>, <a>, <b> ] )
138##
139##  <#GAPDoc Label="SecondEigenvalueFromSRGParameters">
140##  <ManSection>
141##  <Func Name="SecondEigenvalueFromSRGParameters"
142##   Arg='[ v, k, a, b ]'/>
143##  <Returns>An integer or an element of a cyclotomic field.</Returns>
144##
145##  <Description>
146##  Given feasible strongly regular graph parameters <A>[v, k, a, b]</A>,
147##  this function returns the second largest eigenvalue of a strongly
148##  regular graph with parameters <M>(<A>v,k,a,b</A>)</M>. If the eigenvalue is
149##  integer, the object returned is an integer. If the eigenvalue is
150##  irrational, the object returned lies in a cyclotomic field.
151##    <Example>
152##      <![CDATA[
153##gap> SecondEigenvalueFromSRGParameters([5,2,0,1]);
154##E(5)+E(5)^4
155##gap> SecondEigenvalueFromSRGParameters([10,3,0,1]);
156##1
157##      ]]>
158##    </Example>
159##  </Description>
160##  </ManSection>
161##  <#/GAPDoc>
162##
163DeclareGlobalFunction( "SecondEigenvalueFromSRGParameters" );
164
165#############################################################################
166##
167#O  LeastEigenvalueMultiplicity( [ <v>, <k>, <a>, <b> ] )
168##
169##  <#GAPDoc Label="LeastEigenvalueMultiplicity">
170##  <ManSection>
171##  <Oper Name="LeastEigenvalueMultiplicity"
172##   Arg='[ v, k, a, b ]'/>
173##  <Returns>An integer.</Returns>
174##
175##  <Description>
176##  Given feasible strongly regular graph parameters <A>[v, k, a, b]</A>
177##  this function returns the multiplicity of the least eigenvalue of a
178##  strongly regular graph with parameters <M>(<A>v,k,a,b</A>)</M>.
179##    <Example>
180##      <![CDATA[
181##gap> LeastEigenvalueMultiplicity([16,9,4,6]);
182##6
183##gap> LeastEigenvalueMultiplicity([25,12,5,6]);
184##12
185##      ]]>
186##    </Example>
187##  </Description>
188##  </ManSection>
189##  <#/GAPDoc>
190##
191DeclareOperation( "LeastEigenvalueMultiplicity" , [IsList] );
192
193#############################################################################
194##
195#O  SecondEigenvalueMultiplicity( [ <v>, <k>, <a>, <b> ] )
196##
197##  <#GAPDoc Label="SecondEigenvalueMultiplicity">
198##  <ManSection>
199##  <Oper Name="SecondEigenvalueMultiplicity"
200##   Arg='[ v, k, a, b ]'/>
201##  <Returns>An integer.</Returns>
202##
203##  <Description>
204##  Given feasible strongly regular graph parameters <A>[v, k, a, b]</A>
205##  this function returns the multiplicity of the second eigenvalue of a
206##  strongly regular graph with parameters <M>(<A>v,k,a,b</A>)</M>.
207##    <Example>
208##      <![CDATA[
209##gap> SecondEigenvalueMultiplicity([16,9,4,6]);
210##9
211##gap> SecondEigenvalueMultiplicity([25,12,5,6]);
212##12
213##      ]]>
214##    </Example>
215##  </Description>
216##  </ManSection>
217##  <#/GAPDoc>
218##
219DeclareOperation( "SecondEigenvalueMultiplicity", [IsList] );
220
221#############################################################################
222##
223#E
224