At Westonci.ca, we connect you with the best answers from a community of experienced and knowledgeable individuals. Discover reliable solutions to your questions from a wide network of experts on our comprehensive Q&A platform. Connect with a community of professionals ready to help you find accurate solutions to your questions quickly and efficiently.

Write a Prolog predicate assoc_list(L,AL) that takes in a fully-instantiated (i.e. contains no variables) list L and is true if AL is equal to the association list of L. An association list is a list consisting of pairs E-C of an element E of L and C, its number of occurrences in L. The associative list should not contain any duplicates. In Prolog, we use A-B for a pair of elements A and B. For example, 1-2 is a pair (1,2). In the result, the order of the elements must be the same as the order in which the (first occurrences of the) elements appear in L.

?- assoc_list([1,1,2,2,2,3,1], [1-3,2-3,3-1]).
/* expected output: true . */

?- assoc_list([1,1,4,2,2,2,3,1,1,3,1], X).
/* expected output: X = [1-5,4-1,2-3,3-2] . */