# COMP 3031 Assignment 3 Logic Programming solved

\$35.00

## Description

5/5 - (1 vote)

1. Listing all the professors of a student’s enrollments
Define a relation prof_ids(Stu, L) that specifies a list L of all the professor IDs of a student’s
enrollment. The order of professor IDs in L corresponds to the order of courses taught by these
professors in enroll(Stu, Courses).
Examples:
?- prof_ids(1701, L).
L = [p01, p03].
?- prof_ids(1501, L).
L = [].
?- prof_ids(Stu, [p01]).
Stu = 1602 ;
false.
?- prof_ids(Stu, [p01, p02]).
false.
?- prof_ids(Stu, [p01, p03]).
Stu = 1701 ;
false.
?- prof_ids(Stu, [p01, p03, p04]).
false.
?- prof_ids(Stu, L).
Stu = 1701,
L = [p01, p03] ;
Stu = 1602,
L = [p01] ;
Stu = 1711,
L = [p01, p01, p03] ;
Stu = 1501,
L = [].
2. Listing common enrollments of two students
Write a relation common_enroll (X, Y, L) that specifies a list L of courses that two different
students X and Y both enroll in.
Examples:
?- common_enroll(1701, 1602, L).
L = [].
?- common_enroll(1701, 1501, L).
L = [].
?- common_enroll(1701, 1711, L).
L = [c01, c10].
?- common_enroll(1701, 1711, []).
true.
?- common_enroll(1701, 1711, [c01]).
true.
?- common_enroll(1701, 1711, [c01, c23]).
false.
?- common_enroll(1701, 1711, [c10, c01]).
true.
?- common_enroll(1701, Y, L).
Y = 1602,
L = [] ;
Y = 1711,
L = [c01, c10] ;
Y = 1501,
L = [] ;
false.
?- common_enroll(X, 1711, L).
X = 1701,
L = [c01, c10] ;
X = 1602,
L = [c21] ;
X = 1501,
L = [] ;
false.
3. Listing distinct students that enroll in a professor’s course(s)
Write a relation student_list(Prof, L) that specifies a list L of distinct students that enroll
in at least one course taught by the professor Prof.
Examples:
?- student_list(p01, L).
L = [1711, 1602, 1701].
?- student_list(p02, L).
L = [].
?- student_list(p04, L).
L = [].
?- student_list(p01, []).
true.
?- student_list(p01, [1701, 1711]).
true.
?- student_list(p01, [1501, 1711]).
false.
?- student_list(X, L).
X = p01,
L = [1711, 1602, 1701] ;
X = p02,
L = [] ;
X = p03,
L = [1711, 1701] ;
X = p04,
L = [].
4. Listing courses taught by the professors
Write a relation course_list(L) that specifies a list L of courses taught by the professors in the
teach facts.
Examples:
?- course_list(L).
L = [c01, c21, c23, c10].
?- course_list([]).
true.
?- course_list([c01]).
true.
?- course_list([c23, c21]).
true.
?- course_list([c23, c02]).
false.
?- course_list([c01, c21, c23, c10]).
true.
5. Counting the number of students that enroll in a course
Write a relation count_students(C, N) that counts the number of students that enroll in the
course C.
Examples:
?- count_students(c01, N).
N = 2.
?- count_students(c01, 2).
true.
?- count_students(c01, 0).
false.
?- count_students(c23, N).
N = 0.
?- count_students(c10, N).
N = 2.
?- count_students(X, 2).
X = c01 ;
X = c21 ;
X = c10.
?- count_students(X, 0).
X = c23 ;
false.
?- count_students(X, 1).
false.
?- count_students(X, N).
X = c01,
N = 2 ;
X = c21,
N = 2 ;
X = c23,
N = 0 ;
X = c10,
N = 2.