General Marking Scheme: ============================== Total: / 60 1. Family predicates / 8 a) mother-in-law 3 b) sister-in-law 5 2. Simple relations / 8 (1 pt each: correctness + 1 pt for testing) 3. Append queries / 6 (1 pt each for a,b; 2 pt each for c,d) 4. List Handling / 15 a) delete 3 b) rm-dups 6 Testing: 6 (3 each) 5. Other predicates / 23 a) even 2 b) palindrome 4 c) selectionsort 8 Testing: 9 (2 for a, 3 for b, 4 for c). Symbols used for marking test suites: ============================================= T.V. Haven't tested with Variable parameters T.I. Haven't tested with completely Instantiated parameters ; No ; or not enough ; to test answers for a given query. TNC Test suite is not complete List of common mistakes: ================================== Generally, many students had redundant rules or facts for some relations that generated unnecessarily multiple solutions (e.g. if you removed them the code would still be correct). This has been indicated by "R" (meaning Redundant) and part marks has been deducted. Q1. "married" is not two-way. So, you need a helper(e.g. spouse) or multiple rules Q2. a,b,c,d: you lose part marks if your code generates multiple solutions when the list is fully instantiated. Q3. 1. your query fails for lists with one element (e.g. [a]) 2. your query fails for lists with 2 or 3 element (consider [a,a] or [a,b,c] ) Q4. Forgetting "\=", so your code will also give wrong answers, if your test suite doesn't check all the answers using "; you've lost more mark (basically half of the total mark). Q5. Wrong base cases for selsort or finding Min, so your selsort generates wrong answers too, when forced to backtrack. In this case if you've forgot to check all the answers using ";", you've lost half of the total mark. Also, testing selsort with the second list (L2) being uninstantiated is very important, if your code has problems with second list being a variable, you have lost at least 1/4 of the total mark.