:- module char.
:- pragma termination_info(char.to_int((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(char.to_int((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(char.to_int((builtin.in), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.to_int((builtin.out), (builtin.in)), infinite, cannot_loop).
:- pragma termination_info(char.from_int((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(char.det_from_int((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(char.det_from_int((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info((char.max_char_value) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(char.max_char_value((builtin.out)), infinite, cannot_loop).
:- pragma termination_info((char.min_char_value) = (builtin.out), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.min_char_value((builtin.out)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.to_upper((builtin.in)) = (builtin.out), finite(0, [yes, no]), cannot_loop).
:- pragma termination_info(char.to_upper((builtin.in), (builtin.out)), finite(0, [yes, no]), cannot_loop).
:- pragma termination_info(char.to_lower((builtin.in)) = (builtin.out), finite(0, [yes, no]), cannot_loop).
:- pragma termination_info(char.to_lower((builtin.in), (builtin.out)), finite(0, [yes, no]), cannot_loop).
:- pragma termination_info(char.lower_upper((builtin.in), (builtin.out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.lower_upper((builtin.out), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.is_whitespace((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_upper((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_lower((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_alpha((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_alnum((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_alpha_or_underscore((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_alnum_or_underscore((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_digit((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_binary_digit((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_octal_digit((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_hex_digit((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_hex_digit((builtin.in), (builtin.out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.int_to_hex_char((builtin.in), (builtin.out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.digit_to_int((builtin.in), (builtin.out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.int_to_digit((builtin.in), (builtin.out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.int_to_digit((builtin.out), (builtin.in)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.det_int_to_digit((builtin.in)) = (builtin.out), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.det_int_to_digit((builtin.in), (builtin.out)), finite(0, [no, no]), cannot_loop).
:- pragma termination_info(char.char_to_doc((builtin.in)) = (builtin.out), infinite, can_loop).
:- pragma termination_info(char.to_utf8((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(char.to_utf16((builtin.in), (builtin.out)), infinite, cannot_loop).
:- pragma termination_info(char.is_surrogate((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.is_noncharacter((builtin.in)), finite(0, [no]), cannot_loop).
:- pragma termination_info(char.'ClassMethod_for_enum__enum____character__arity0______enum__to_int_1'((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma termination_info(char.'ClassMethod_for_enum__enum____character__arity0______enum__from_int_1'((builtin.in)) = (builtin.out), infinite, cannot_loop).
:- pragma exceptions(function, (char.to_int), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.to_int), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.to_int), 2, 1, will_not_throw).
:- pragma exceptions(predicate, (char.to_int), 2, 2, will_not_throw).
:- pragma exceptions(predicate, (char.from_int), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.det_from_int), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (char.det_from_int), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (char.max_char_value), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.max_char_value), 1, 0, will_not_throw).
:- pragma exceptions(function, (char.min_char_value), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.min_char_value), 1, 0, will_not_throw).
:- pragma exceptions(function, (char.to_upper), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.to_upper), 2, 0, will_not_throw).
:- pragma exceptions(function, (char.to_lower), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.to_lower), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.lower_upper), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.lower_upper), 2, 1, will_not_throw).
:- pragma exceptions(predicate, (char.is_whitespace), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_upper), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_lower), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_alpha), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_alnum), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_alpha_or_underscore), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_alnum_or_underscore), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_digit), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_binary_digit), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_octal_digit), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_hex_digit), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_hex_digit), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.int_to_hex_char), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.digit_to_int), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.int_to_digit), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.int_to_digit), 2, 1, will_not_throw).
:- pragma exceptions(function, (char.det_int_to_digit), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (char.det_int_to_digit), 2, 0, may_throw(user_exception)).
:- pragma exceptions(function, (char.char_to_doc), 2, 0, may_throw(user_exception)).
:- pragma exceptions(predicate, (char.to_utf8), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.to_utf16), 2, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_surrogate), 1, 0, will_not_throw).
:- pragma exceptions(predicate, (char.is_noncharacter), 1, 0, will_not_throw).
