prolog programming

profilefohusn6m28
pro.docx

Your task is to write the following predicates in SWI-Prolog .

The slash and number after the predicate name give the number of parameters for the predicate. These characters are NOT part of the predicate name. So, remove/3 means that remove is a predicate with 3 parameters.

1. remove/3. Removes from the list given by the first parameter, all elements appearing in the list given by the second parameter, and returns the result in the third parameter.

Examples:

31 ?- remove([a, b, c, d, e, f], [a, d], X).

X = [b, c, e, f] ;

32 ?- remove([a, b, c, d, e, f], [], X).

X = [a, b, c, d, e, f] ;

33 ?- remove([a, b, c, d, e, f, a, a, d, e], [a, e], X).

X = [b, c, d, f, d] ;

1. members_in_common/3. Given two lists through the first two parameters, it returns the list of common elements in the third parameter.

Examples:

46 ?- members_in_common([a, b, c, d, a, b, a], [a, d, f, f, c, c, f], X).

X = [a, c, d, a, a]

Yes

47 ?- members_in_common([a, b, c, d, a, b, a], [p, q, r, s], X).

X = []

Yes

48 ?- members_in_common([a, b, c, d, a, b, a], [], X).

X = []

Yes

1. sum/2. Given two parameters, the first one being a list of numbers, return the sum of the numbers in the list in the second parameter.

Examples:

sum([3, 5, -7, 8], X).

X = 9

sum([3], X).

X = 3

1. min/2. Given two parameters, the first one being a list of numbers, return the minimum value in the list in the second parameter.

min([3, 3, 8, 9, 2, 9, 2], X).

X = 2

min([7], X).

X = 7

None of the lists is a list of lists. The functions must all be independent. The only PROLOG predicate that you are allowed to use is member.

Grading:

Each predicate will carry 8 points for correctness; rest of the points will be for code quality (4 points) and for proper formatting (4 points).

Submission: Submit the program source code via D2L.