prerequisites = pl`
/* Some CSE majors courses and their prerequisites. This simplifies
the actual CSE curriculum by assuming courses have at most one
direct prerequisite. */
prerequisite(cse142,cse143).
prerequisite(cse143,cse311).
prerequisite(cse311,cse312).
prerequisite(cse143,cse331).
prerequisite(cse143,cse341).
/* take_before(A,B) succeeds if you must take A before B */
take_before(X,Z) :- prerequisite(X,Z).
take_before(X,Z) :- prerequisite(X,Y),
take_before(Y,Z).
`