tests in test_heuristic_break_ctor (in branch origin/prototype-typer-test-heuristic-break-ctor currently) should randomize the order of the tests in the db
e.g.
(*create a state :)
state = [
(constraint 1L a = int)
(constraint 2L b = record { x = a ; y = a })
(constraint 3L c = map(a, b))
(constraint 4L d = poly ∀ a, a -> int -> map(a,int) )
] *)
(* pass a new constraint to the selector:
(constraint 5L c = map(f, g))
*)
(* check that the selector returns a list containing the pair of constraints (3L, 5L) or (5L, 3L) *)
The test should randomize the order, above the order is (1,2,3,4)+5 → {3,5}. Any order where the "new constraint" is 3 or 5 (i.e. one of the two constraints being returned) is valid, and the results should be identical (modulo the order in the result pair, i.e. result should always be (3,5) or (5,3)).