Welcome to Westonci.ca, the ultimate question and answer platform. Get expert answers to your questions quickly and accurately. Join our platform to connect with experts ready to provide precise answers to your questions in various areas. Get immediate and reliable solutions to your questions from a community of experienced professionals on our 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] . */