StdChar.digitToInt !c_0 = sub (toInt_char c_0) 48
<{StdChar.<_19}> :== lt
StdChar.toUpper !c_0 = if (StdChar.isLower c_0) (toChar (add (toInt_char c_0) (sub (toInt_char 'A') (toInt_char 'a')))) c_0
StdChar.toLower !c_0 = if (StdChar.isUpper c_0) (toChar (sub (toInt_char c_0) (sub (toInt_char 'A') (toInt_char 'a')))) c_0
StdChar.isUpper !c_0 = and (ge c_0 'A') (ge 'Z' c_0)
StdChar.isLower !c_0 = and (ge c_0 'a') (ge 'z' c_0)
StdChar.isAlpha !c_0 = or (StdChar.isLower c_0) (StdChar.isUpper c_0)
StdChar.isAlphanum !c_0 =  or (StdChar.isAlpha c_0) (StdChar.isDigit c_0)
StdChar.isDigit !c_0 = and (ge c_0 '0') (ge '9' c_0)
StdChar.isOctDigit !c_0 = and (ge c_0 '0') (ge '7' c_0)
StdChar.isHexDigit !c_0 = or (StdChar.isDigit c_0) (or (and (ge c_0 'A') (ge 'F' c_0)) (and (ge c_0 'a') (ge 'f' c_0)))
<{StdChar.==_18}> :== eq
StdChar.isSpace !c_0 = select c_0 (' ' -> true) ('\t' -> true) ('\n' -> true) ('\r' -> true) ('\f' -> true) ('\r' -> true) (_ -> false)
StdChar.isControl !c_0 = if (lt c_0 ' ') true (eq c_0 '\xB1')
StdChar.isPrint !c_0 = if (ge c_0 ' ') (not (lt '~' c_0)) false
StdChar.isAscii !c_0 = gt 128 c_0
<{StdChar.+_14}> !a !b = toChar (add (toInt_char a) (toInt_char b))
<{StdChar.-_15}> !a !b = toChar (sub (toInt_char a) (toInt_char b))
StdChar.zero_16 :== '\x00'
StdChar.one_17 :== '\x01'
StdChar.toChar_20 !a = a
StdChar.toChar_21 :== toChar 
StdChar.fromChar_22 :== toInt_char
StdChar.fromChar_23 !a_0 = a_0