Download
language Essence 1.3
$ Ramsey's theorem
$ Decide if a complete graph K_n with edges coloured with c colours must have a monochromatic triangle
$ Keeps edges in both directions
given n : int(1..20)
given colours : int(1..10)
letting num_edges be (n * (n-1))
$ could made these an unamed type
letting Colour be domain int(1..colours)
letting Vertex be domain int(1..n)
find graph : relation (size num_edges) of ( Colour * Vertex * Vertex )
such that
$ make sure the it's a complete graph
forAll i : Vertex .
|(toSet(graph(_,i,_) ))| = (n - 1) /\
|(toSet(graph(_,_,i) ))| = (n - 1) /\
|(toSet(graph(_,i,i) ))| = 0,
forAll i, j : Vertex , i != j .
|(toSet(graph(_,i,j) ))| = 1 /\
|(toSet(graph(_,j,i) ))| = 1 /\
graph(_,i,j) = graph(_,j,i),
$ check for a monochromatic triangle
forAll i : Vertex .
forAll (c,e1) in toSet(graph(_, i, _) ) .
forAll tuple (t) in toSet(graph(c, i, _) ) , t != e1 .
!graph(c, t, e1)