Welcome to Westonci.ca, where you can find answers to all your questions from a community of experienced professionals. Connect with a community of experts ready to provide precise solutions to your questions on our user-friendly Q&A platform. Get detailed and accurate answers to your questions from a dedicated community of experts on our Q&A platform.

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] . */