let auto_numbering_of_string (s: string) : int -> int -> string = match s with |"a1i" -> let auto_numbering (lvl : int) (n:int) = match lvl mod 5 with |0 -> lower_case_latin_letter n |1 -> string_of_int (n+1) |2 -> lower_case_roman_numeral n |3 -> upper_case_latin_letter n |_ -> upper_case_roman_numeral n in auto_numbering |"ai1" -> let auto_numbering (lvl : int) (n:int) = match lvl mod 5 with |0 -> lower_case_latin_letter n |1 -> lower_case_roman_numeral n |2 -> string_of_int (n+1) |3 -> upper_case_latin_letter n |_ -> upper_case_roman_numeral n in auto_numbering |"1ai" -> let auto_numbering (lvl : int) (n:int) = match lvl mod 5 with |0 -> string_of_int (n+1) |1 -> lower_case_latin_letter n |2 -> lower_case_roman_numeral n |3 -> upper_case_latin_letter n |_ -> upper_case_roman_numeral n in auto_numbering |"1ia"-> let auto_numbering (lvl : int) (n:int) = match lvl mod 5 with |0 -> string_of_int (n+1) |1 -> lower_case_roman_numeral n |2 -> lower_case_latin_letter n |3 -> upper_case_roman_numeral n |_ -> upper_case_latin_letter n in auto_numbering |"ia1" -> let auto_numbering (lvl : int) (n:int) = match lvl mod 5 with |0 -> lower_case_roman_numeral n |1 -> lower_case_latin_letter n |2 -> string_of_int (n+1) |3 -> upper_case_roman_numeral n |_ -> upper_case_latin_letter n in auto_numbering |"i1a" -> let auto_numbering (lvl : int) (n:int) = match lvl mod 5 with |0 -> lower_case_roman_numeral n |1 -> string_of_int (n+1) |2 -> lower_case_latin_letter n |3 -> upper_case_roman_numeral n |_ -> upper_case_latin_letter n in auto_numbering |_ -> raise (Invalid_argument s)