datatype peano = Z | S of peano datatype list = nill | cons of int * list datatype plist = nilpl | consp of peano * plist datatype list_of_lists = nill_list | cons_list of list * list_of_lists fun f( InVal : plist ) : bool = raise D1 fun main( Xs : plist ) : bool = f Xs %% fun to_list [] = nill | to_list( X :: Xs ) = cons( X, to_list Xs ) fun to_plist [] = nilpl | to_plist( X :: Xs ) = consp( X, to_plist Xs ) fun from_list nill = [] | from_list( cons( X, Xs ) ) = X :: from_list Xs fun to_list_of_lists [] = nill_list | to_list_of_lists( X :: Xs ) = cons_list( to_list X, to_list_of_lists Xs ) fun from_list_of_lists nill_list = [] | from_list_of_lists( cons_list( X, Xs ) ) = from_list X :: from_list_of_lists Xs val translate_input = to_plist val translate_output = (fn x => x) val Input_output_pairs_pos = [ ( ([]),true ), ( ([Z]),true ), ( ([S(Z)]),true ), ( ([S(S(Z))]),false ), ( ([S(S(S(Z)))]),true ), ( ([Z,Z]),false ), ( ([Z,S(Z)]),false ), ( ([Z,S(S(Z))]),false ), ( ([Z,S(S(S(Z)))]),false ), ( ([S(Z),Z]),false ), ( ([S(Z),S(Z)]),true ), ( ([S(Z),S(S(Z))]),false ), ( ([S(Z),S(S(S(Z)))]),true ), ( ([S(S(Z)),Z]),false ), ( ([S(S(Z)),S(Z)]),false ), ( ([S(S(Z)),S(S(Z))]),false ), ( ([S(S(Z)),S(S(S(Z)))]),false ), ( ([S(S(S(Z))),Z]),false ), ( ([S(S(S(Z))),S(Z)]),true ), ( ([S(S(S(Z))),S(S(Z))]),false ), ( ([S(S(S(Z))),S(S(S(Z)))]),true ), ( ([Z,Z,Z]),false ), ( ([Z,Z,S(Z)]),false ), ( ([Z,Z,S(S(Z))]),false ), ( ([Z,Z,S(S(S(Z)))]),false ), ( ([Z,S(Z),Z]),false ), ( ([Z,S(Z),S(Z)]),false ), ( ([Z,S(Z),S(S(Z))]),false ), ( ([Z,S(Z),S(S(S(Z)))]),false ), ( ([Z,S(S(Z)),Z]),false ), ( ([Z,S(S(Z)),S(Z)]),false ), ( ([Z,S(S(Z)),S(S(Z))]),false ), ( ([Z,S(S(Z)),S(S(S(Z)))]),false ), ( ([Z,S(S(S(Z))),Z]),false ), ( ([Z,S(S(S(Z))),S(Z)]),false ), ( ([Z,S(S(S(Z))),S(S(Z))]),false ), ( ([Z,S(S(S(Z))),S(S(S(Z)))]),false ), ( ([S(Z),Z,Z]),false ), ( ([S(Z),Z,S(Z)]),false ), ( ([S(Z),Z,S(S(Z))]),false ), ( ([S(Z),Z,S(S(S(Z)))]),false ), ( ([S(Z),S(Z),Z]),false ), ( ([S(Z),S(Z),S(Z)]),true ), ( ([S(Z),S(Z),S(S(Z))]),false ), ( ([S(Z),S(Z),S(S(S(Z)))]),true ), ( ([S(Z),S(S(Z)),Z]),false ), ( ([S(Z),S(S(Z)),S(Z)]),false ), ( ([S(Z),S(S(Z)),S(S(Z))]),false ), ( ([S(Z),S(S(Z)),S(S(S(Z)))]),false ), ( ([S(Z),S(S(S(Z))),Z]),false ), ( ([S(Z),S(S(S(Z))),S(Z)]),true ), ( ([S(Z),S(S(S(Z))),S(S(Z))]),false ), ( ([S(Z),S(S(S(Z))),S(S(S(Z)))]),true ), ( ([S(S(Z)),Z,Z]),false ), ( ([S(S(Z)),Z,S(Z)]),false ), ( ([S(S(Z)),Z,S(S(Z))]),false ), ( ([S(S(Z)),Z,S(S(S(Z)))]),false ), ( ([S(S(Z)),S(Z),Z]),false ), ( ([S(S(Z)),S(Z),S(Z)]),false ), ( ([S(S(Z)),S(Z),S(S(Z))]),false ), ( ([S(S(Z)),S(Z),S(S(S(Z)))]),false ), ( ([S(S(Z)),S(S(Z)),Z]),false ), ( ([S(S(Z)),S(S(Z)),S(Z)]),false ), ( ([S(S(Z)),S(S(Z)),S(S(Z))]),false ), ( ([S(S(Z)),S(S(Z)),S(S(S(Z)))]),false ), ( ([S(S(Z)),S(S(S(Z))),Z]),false ), ( ([S(S(Z)),S(S(S(Z))),S(Z)]),false ), ( ([S(S(Z)),S(S(S(Z))),S(S(Z))]),false ), ( ([S(S(Z)),S(S(S(Z))),S(S(S(Z)))]),false ), ( ([S(S(S(Z))),Z,Z]),false ), ( ([S(S(S(Z))),Z,S(Z)]),false ), ( ([S(S(S(Z))),Z,S(S(Z))]),false ), ( ([S(S(S(Z))),Z,S(S(S(Z)))]),false ), ( ([S(S(S(Z))),S(Z),Z]),false ), ( ([S(S(S(Z))),S(Z),S(Z)]),true ), ( ([S(S(S(Z))),S(Z),S(S(Z))]),false ), ( ([S(S(S(Z))),S(Z),S(S(S(Z)))]),true ), ( ([S(S(S(Z))),S(S(Z)),Z]),false ), ( ([S(S(S(Z))),S(S(Z)),S(Z)]),false ), ( ([S(S(S(Z))),S(S(Z)),S(S(Z))]),false ), ( ([S(S(S(Z))),S(S(Z)),S(S(S(Z)))]),false ), ( ([S(S(S(Z))),S(S(S(Z))),Z]),false ), ( ([S(S(S(Z))),S(S(S(Z))),S(Z)]),true ), ( ([S(S(S(Z))),S(S(S(Z))),S(S(Z))]),false ), ( ([S(S(S(Z))),S(S(S(Z))),S(S(S(Z)))]),true ), ( ([S(S(S(Z))),S(S(S(Z))),S(S(S(S(S(S(S(Z))))))),S(S(S(Z)))]),true ), ( ([S(S(S(S(S(S(S(S(Z)))))))),S(S(S(Z))),S(S(S(Z))),S(S(S(Z)))]),false ), ( ([S(S(S(Z))),S(S(S(Z))),S(S(S(S(S(Z))))),S(S(S(S(S(S(S(Z))))))),S(S(S(Z)))]),true ), ( ([S(S(S(Z))),S(S(S(Z))),S(S(S(S(S(Z))))),S(S(S(S(S(S(S(Z))))))),S(S(S(Z))),S(S(S(S(Z))))]),false ), ( ([S(S(S(S(S(S(S(S(Z)))))))),S(S(S(Z))),S(S(S(Z))),S(S(S(S(S(S(Z)))))),S(S(S(S(Z))))]),false ) ] val Input_output_pairs_neg = [ ] val Inputs = map( translate_input o #1, Input_output_pairs_pos ) val Outputs = map( translate_output o #2, Input_output_pairs_pos ) val Validation_inputs = [] val Validation_outputs = [] val All_outputs = Vector.fromList( Outputs @ Validation_outputs ) val Funs_to_use = [ "S", "Z", "nilpl", "consp", "true", "false" ]val Reject_funs = [] fun restore_transform D = D structure Grade : GRADE = struct type grade = unit val zero = () val op+ = fn(_,_) => () val comparisons = [ fn _ => EQUAL ] val toString = fn _ => "" val fromString = fn _ => SOME() val pack = fn _ => "" val unpack = fn _ =>() val post_process = fn _ => () val toRealOpt = NONE end val Abstract_types = [] fun output_eval_fun( I : int, _ , Y ) = if Vector.sub( All_outputs, I ) <> Y then { numCorrect = 0, numWrong = 1, grade = () } else { numCorrect = 1, numWrong = 0, grade = () } val Max_output_class_card = 4 val Max_output_genus_card = 0 val Max_time_limit = 131072 val Time_limit_base = 2.0