-------------------------------------
-- Macaulay 2 sample input
-- monica (July 2011)
-------------------------------------
--- GETTING STARTED
installPackage "EdgeIdeals"
restart
loadPackage "EdgeIdeals"
--- INPUTING A GRAPH
R = QQ[x_1..x_6]
E = {{x_1,x_2},{x_2,x_3},{x_3,x_4},{x_4,x_5},{x_5,x_1},{x_1,x_6},{x_2,x_6},{x_3,x_6}}
H = graph(R,E) -- one way to define a graph
edges H
vertices H
e = monomialIdeal(x_1*x_2,x_2*x_3,x_3*x_4,x_4*x_5,x_5*x_1,x_1*x_6,x_2*x_6,x_3*x_6)
G = graph e -- another way to define a graph
G == H -- test if two graphs are the same
--- Pay attention to the polynomial ring!
S = QQ[x_1..x_7]
-- ee same ideal as e above
ee = monomialIdeal(x_1*x_2,x_2*x_3,x_3*x_4,x_4*x_5,x_5*x_1,x_1*x_6,x_2*x_6,x_3*x_6)
GG = graph ee -- x_7 is an isolated vertex
GG == G
--- EDGE AND COVER IDEALS
i = edgeIdeal G
j = coverIdeal G
dual i == j -- check if the Alexander Dual of i is j
-- ASSOCIATED PRIMES
ass j -- associated primes
ass i
vertexCovers G
mingens j
--- DOCUMENTATION AND SPECIAL TYPES OF GRAPHS
viewHelp cycle
C6 = cycle R
C6c = complementGraph C6
isChordal C6
isChordal C6c
-- FINDING CYCLES
smallestCycleSize C6
smallestCycleSize C6c
allEvenHoles C6c -- C6c is not chordal, so must have some cycle of size > 3
-- RANDOM GRAPHS
t = randomGraph(R,8) -- random graph on 6 vertices and 8 edges
isChordal oo
betti res edgeIdeal complementGraph t -- Froberg's theorem
---- Make a random graph, we check if it is first (a) chordal,
---- and (b) if it is chordal, we check if R/I(G) is SCM
testChordalSCM = n->(
for i from 1 to n do (
t = randomGraph(R,random(5,15)); -- random graph with 5 to 15 vertices
<< "Graph number " << i << " is chordal: " << isChordal(t) << endl;
if isChordal(t) == true then (
<< "Random Chordal Graph Sequentially Cohen Macaulay: " << isSCM(t) << endl;
)
);
);
testChordalSCM(15)
R = QQ[x_1..x_10]
testChordalSCM(10)
--- You may conjecture chordal ==> SCM. Indeed, we have
---
---
--- (THEOREM) G chordal, then R/I(G) is SCM.