COMP 105 fault graph for type checkers

Test results in matrix form are on another page.

The graph below shows the results of testing type checkers.
Read the nodes as follows:

The edges show which solutions are strictly better than which other solutions; better solutions appear higher in the graph.
From left to right, the tests in the graph exposed these faults:
1. Failed to type-check the function 'o' from the initial basis (or gave it the wrong type).
2. Did not process the function != from the initial basis.
3. Gave '() the non-polymorphic type (list 'a).
4. Accepted '(a 1) with type (list sym).
4a. Given '(a 1), failed with uncaught exception ValNotFound
5a. Term ('1 5) triggered uncaught exception ImpossibleHasHappened.
6. Let (+ 1 #t) past the type checker.
7. Instantiated (@ + int) even though + is not polymorphic.
7a. Correctly detected (@ + int) as a faulty instantiation, but did not catch the resulting TypeError exception.
8. Accepted (val-rec int e1 e1).
8a. Let (val-rec int e1 e1) past the type checker, raising uncaught exception BugInTypeChecking
9. Did not check return type in 'define'.
10. On term(val e2 ((@ cdr int) '(1))), expected type(list int), but got this error instead: type error: (forall ('a) (function ((list 'a)) (list 'a)))is not a valid function expression
11. Failed give (type-lambda ('a) 3) its proper type(forall ('a) int).
12. Accepted (int int) as the type of a lambda-bound variable.
12a. Detected (int int) as a bad type, but failed to catch the resulting exception.
13. Failed to bind 'f' in(let* ((f 3) (g f)) ...)).
14. Either got type error or inferred wrong type for (val e1 (let ((f 3)) (let ((g f) (f #t)) (+ g 96)))), which has typeint.
15. Various failures (g not found, type error, function type) on term(val e2 (let ((f 3)) (let ((f #t) (g f)) (+ g 96)))), which has typeint.
16. Did not use 'eqType' to check equality of types in SET expression.
17. Did not use 'eqType' to check equality of polymorphic types.
18. Failed on a term using 'left' and 'either'.
19. Refused to swallow the correct definition (val-rec (forall ('a) (function ((list 'a) int) 'a)) nth-element (type-lambda ('a) (lambda (((list 'a) l) (int n)) (if ((@ = int) n 0) ((@ car 'a) l) ((@ nth-element 'a) ((@ cdr 'a) l) (- n 1)))))).
Back to the COMP 105 home page.