spec Boolean = sort Boolean ops False : Boolean; Not__ : Boolean->Boolean; True : Boolean; __And__ : Boolean*Boolean->Boolean; __Or__ : Boolean*Boolean->Boolean end spec Char = sorts Char; Pos < Nat; Pos ops ' ' : Char; '!' : Char; '#' : Char; '$' : Char; '%' : Char; '&' : Char; '(' : Char; ')' : Char; '*' : Char; '+' : Char; ',' : Char; '-' : Char; '.' : Char; '/' : Char; '0' : Char; '1' : Char; '2' : Char; '3' : Char; '4' : Char; '5' : Char; '6' : Char; '7' : Char; '8' : Char; '9' : Char; ':' : Char; ';' : Char; '<' : Char; '=' : Char; '>' : Char; '?' : Char; '@' : Char; 'A' : Char; 'B' : Char; 'C' : Char; 'D' : Char; 'E' : Char; 'F' : Char; 'G' : Char; 'H' : Char; 'I' : Char; 'J' : Char; 'K' : Char; 'L' : Char; 'M' : Char; 'N' : Char; 'O' : Char; 'P' : Char; 'Q' : Char; 'R' : Char; 'S' : Char; 'T' : Char; 'U' : Char; 'V' : Char; 'W' : Char; 'X' : Char; 'Y' : Char; 'Z' : Char; '[' : Char; '\"' : Char; '\'' : Char; '\000' : Char; '\001' : Char; '\002' : Char; '\003' : Char; '\004' : Char; '\005' : Char; '\006' : Char; '\007' : Char; '\008' : Char; '\009' : Char; '\010' : Char; '\011' : Char; '\012' : Char; '\013' : Char; '\014' : Char; '\015' : Char; '\016' : Char; '\017' : Char; '\018' : Char; '\019' : Char; '\020' : Char; '\021' : Char; '\022' : Char; '\023' : Char; '\024' : Char; '\025' : Char; '\026' : Char; '\027' : Char; '\028' : Char; '\029' : Char; '\030' : Char; '\031' : Char; '\032' : Char; '\033' : Char; '\034' : Char; '\035' : Char; '\036' : Char; '\037' : Char; '\038' : Char; '\039' : Char; '\040' : Char; '\041' : Char; '\042' : Char; '\043' : Char; '\044' : Char; '\045' : Char; '\046' : Char; '\047' : Char; '\048' : Char; '\049' : Char; '\050' : Char; '\051' : Char; '\052' : Char; '\053' : Char; '\054' : Char; '\055' : Char; '\056' : Char; '\057' : Char; '\058' : Char; '\059' : Char; '\060' : Char; '\061' : Char; '\062' : Char; '\063' : Char; '\064' : Char; '\065' : Char; '\066' : Char; '\067' : Char; '\068' : Char; '\069' : Char; '\070' : Char; '\071' : Char; '\072' : Char; '\073' : Char; '\074' : Char; '\075' : Char; '\076' : Char; '\077' : Char; '\078' : Char; '\079' : Char; '\080' : Char; '\081' : Char; '\082' : Char; '\083' : Char; '\084' : Char; '\085' : Char; '\086' : Char; '\087' : Char; '\088' : Char; '\089' : Char; '\090' : Char; '\091' : Char; '\092' : Char; '\093' : Char; '\094' : Char; '\095' : Char; '\096' : Char; '\097' : Char; '\098' : Char; '\099' : Char; '\100' : Char; '\101' : Char; '\102' : Char; '\103' : Char; '\104' : Char; '\105' : Char; '\106' : Char; '\107' : Char; '\108' : Char; '\109' : Char; '\110' : Char; '\111' : Char; '\112' : Char; '\113' : Char; '\114' : Char; '\115' : Char; '\116' : Char; '\117' : Char; '\118' : Char; '\119' : Char; '\120' : Char; '\121' : Char; '\122' : Char; '\123' : Char; '\124' : Char; '\125' : Char; '\126' : Char; '\127' : Char; '\128' : Char; '\129' : Char; '\130' : Char; '\131' : Char; '\132' : Char; '\133' : Char; '\134' : Char; '\135' : Char; '\136' : Char; '\137' : Char; '\138' : Char; '\139' : Char; '\140' : Char; '\141' : Char; '\142' : Char; '\143' : Char; '\144' : Char; '\145' : Char; '\146' : Char; '\147' : Char; '\148' : Char; '\149' : Char; '\150' : Char; '\151' : Char; '\152' : Char; '\153' : Char; '\154' : Char; '\155' : Char; '\156' : Char; '\157' : Char; '\158' : Char; '\159' : Char; '\160' : Char; '\161' : Char; '\162' : Char; '\163' : Char; '\164' : Char; '\165' : Char; '\166' : Char; '\167' : Char; '\168' : Char; '\169' : Char; '\170' : Char; '\171' : Char; '\172' : Char; '\173' : Char; '\174' : Char; '\175' : Char; '\176' : Char; '\177' : Char; '\178' : Char; '\179' : Char; '\180' : Char; '\181' : Char; '\182' : Char; '\183' : Char; '\184' : Char; '\185' : Char; '\186' : Char; '\187' : Char; '\188' : Char; '\189' : Char; '\190' : Char; '\191' : Char; '\192' : Char; '\193' : Char; '\194' : Char; '\195' : Char; '\196' : Char; '\197' : Char; '\198' : Char; '\199' : Char; '\200' : Char; '\201' : Char; '\202' : Char; '\203' : Char; '\204' : Char; '\205' : Char; '\206' : Char; '\207' : Char; '\208' : Char; '\209' : Char; '\210' : Char; '\211' : Char; '\212' : Char; '\213' : Char; '\214' : Char; '\215' : Char; '\216' : Char; '\217' : Char; '\218' : Char; '\219' : Char; '\220' : Char; '\221' : Char; '\222' : Char; '\223' : Char; '\224' : Char; '\225' : Char; '\226' : Char; '\227' : Char; '\228' : Char; '\229' : Char; '\230' : Char; '\231' : Char; '\232' : Char; '\233' : Char; '\234' : Char; '\235' : Char; '\236' : Char; '\237' : Char; '\238' : Char; '\239' : Char; '\240' : Char; '\241' : Char; '\242' : Char; '\243' : Char; '\244' : Char; '\245' : Char; '\246' : Char; '\247' : Char; '\248' : Char; '\249' : Char; '\250' : Char; '\251' : Char; '\252' : Char; '\253' : Char; '\254' : Char; '\255' : Char; '\?' : Char; '\\' : Char; '\a' : Char; '\b' : Char; '\f' : Char; '\n' : Char; '\o000' : Char; '\o001' : Char; '\o002' : Char; '\o003' : Char; '\o004' : Char; '\o005' : Char; '\o006' : Char; '\o007' : Char; '\o010' : Char; '\o011' : Char; '\o012' : Char; '\o013' : Char; '\o014' : Char; '\o015' : Char; '\o016' : Char; '\o017' : Char; '\o020' : Char; '\o021' : Char; '\o022' : Char; '\o023' : Char; '\o024' : Char; '\o025' : Char; '\o026' : Char; '\o027' : Char; '\o030' : Char; '\o031' : Char; '\o032' : Char; '\o033' : Char; '\o034' : Char; '\o035' : Char; '\o036' : Char; '\o037' : Char; '\o040' : Char; '\o041' : Char; '\o042' : Char; '\o043' : Char; '\o044' : Char; '\o045' : Char; '\o046' : Char; '\o047' : Char; '\o050' : Char; '\o051' : Char; '\o052' : Char; '\o053' : Char; '\o054' : Char; '\o055' : Char; '\o056' : Char; '\o057' : Char; '\o060' : Char; '\o061' : Char; '\o062' : Char; '\o063' : Char; '\o064' : Char; '\o065' : Char; '\o066' : Char; '\o067' : Char; '\o070' : Char; '\o071' : Char; '\o072' : Char; '\o073' : Char; '\o074' : Char; '\o075' : Char; '\o076' : Char; '\o077' : Char; '\o100' : Char; '\o101' : Char; '\o102' : Char; '\o103' : Char; '\o104' : Char; '\o105' : Char; '\o106' : Char; '\o107' : Char; '\o110' : Char; '\o111' : Char; '\o112' : Char; '\o113' : Char; '\o114' : Char; '\o115' : Char; '\o116' : Char; '\o117' : Char; '\o120' : Char; '\o121' : Char; '\o122' : Char; '\o123' : Char; '\o124' : Char; '\o125' : Char; '\o126' : Char; '\o127' : Char; '\o130' : Char; '\o131' : Char; '\o132' : Char; '\o133' : Char; '\o134' : Char; '\o135' : Char; '\o136' : Char; '\o137' : Char; '\o140' : Char; '\o141' : Char; '\o142' : Char; '\o143' : Char; '\o144' : Char; '\o145' : Char; '\o146' : Char; '\o147' : Char; '\o150' : Char; '\o151' : Char; '\o152' : Char; '\o153' : Char; '\o154' : Char; '\o155' : Char; '\o156' : Char; '\o157' : Char; '\o160' : Char; '\o161' : Char; '\o162' : Char; '\o163' : Char; '\o164' : Char; '\o165' : Char; '\o166' : Char; '\o167' : Char; '\o170' : Char; '\o171' : Char; '\o172' : Char; '\o173' : Char; '\o174' : Char; '\o175' : Char; '\o176' : Char; '\o177' : Char; '\o200' : Char; '\o201' : Char; '\o202' : Char; '\o203' : Char; '\o204' : Char; '\o205' : Char; '\o206' : Char; '\o207' : Char; '\o210' : Char; '\o211' : Char; '\o212' : Char; '\o213' : Char; '\o214' : Char; '\o215' : Char; '\o216' : Char; '\o217' : Char; '\o220' : Char; '\o221' : Char; '\o222' : Char; '\o223' : Char; '\o224' : Char; '\o225' : Char; '\o226' : Char; '\o227' : Char; '\o230' : Char; '\o231' : Char; '\o232' : Char; '\o233' : Char; '\o234' : Char; '\o235' : Char; '\o236' : Char; '\o237' : Char; '\o240' : Char; '\o241' : Char; '\o242' : Char; '\o243' : Char; '\o244' : Char; '\o245' : Char; '\o246' : Char; '\o247' : Char; '\o250' : Char; '\o251' : Char; '\o252' : Char; '\o253' : Char; '\o254' : Char; '\o255' : Char; '\o256' : Char; '\o257' : Char; '\o260' : Char; '\o261' : Char; '\o262' : Char; '\o263' : Char; '\o264' : Char; '\o265' : Char; '\o266' : Char; '\o267' : Char; '\o270' : Char; '\o271' : Char; '\o272' : Char; '\o273' : Char; '\o274' : Char; '\o275' : Char; '\o276' : Char; '\o277' : Char; '\o300' : Char; '\o301' : Char; '\o302' : Char; '\o303' : Char; '\o304' : Char; '\o305' : Char; '\o306' : Char; '\o307' : Char; '\o310' : Char; '\o311' : Char; '\o312' : Char; '\o313' : Char; '\o314' : Char; '\o315' : Char; '\o316' : Char; '\o317' : Char; '\o320' : Char; '\o321' : Char; '\o322' : Char; '\o323' : Char; '\o324' : Char; '\o325' : Char; '\o326' : Char; '\o327' : Char; '\o330' : Char; '\o331' : Char; '\o332' : Char; '\o333' : Char; '\o334' : Char; '\o335' : Char; '\o336' : Char; '\o337' : Char; '\o340' : Char; '\o341' : Char; '\o342' : Char; '\o343' : Char; '\o344' : Char; '\o345' : Char; '\o346' : Char; '\o347' : Char; '\o350' : Char; '\o351' : Char; '\o352' : Char; '\o353' : Char; '\o354' : Char; '\o355' : Char; '\o356' : Char; '\o357' : Char; '\o360' : Char; '\o361' : Char; '\o362' : Char; '\o363' : Char; '\o364' : Char; '\o365' : Char; '\o366' : Char; '\o367' : Char; '\o370' : Char; '\o371' : Char; '\o372' : Char; '\o373' : Char; '\o374' : Char; '\o375' : Char; '\o376' : Char; '\o377' : Char; '\r' : Char; '\t' : Char; '\v' : Char; '\x00' : Char; '\x01' : Char; '\x02' : Char; '\x03' : Char; '\x04' : Char; '\x05' : Char; '\x06' : Char; '\x07' : Char; '\x08' : Char; '\x09' : Char; '\x0A' : Char; '\x0B' : Char; '\x0C' : Char; '\x0D' : Char; '\x0E' : Char; '\x0F' : Char; '\x10' : Char; '\x11' : Char; '\x12' : Char; '\x13' : Char; '\x14' : Char; '\x15' : Char; '\x16' : Char; '\x17' : Char; '\x18' : Char; '\x19' : Char; '\x1A' : Char; '\x1B' : Char; '\x1C' : Char; '\x1D' : Char; '\x1E' : Char; '\x1F' : Char; '\x20' : Char; '\x21' : Char; '\x22' : Char; '\x23' : Char; '\x24' : Char; '\x25' : Char; '\x26' : Char; '\x27' : Char; '\x28' : Char; '\x29' : Char; '\x2A' : Char; '\x2B' : Char; '\x2C' : Char; '\x2D' : Char; '\x2E' : Char; '\x2F' : Char; '\x30' : Char; '\x31' : Char; '\x32' : Char; '\x33' : Char; '\x34' : Char; '\x35' : Char; '\x36' : Char; '\x37' : Char; '\x38' : Char; '\x39' : Char; '\x3A' : Char; '\x3B' : Char; '\x3C' : Char; '\x3D' : Char; '\x3E' : Char; '\x3F' : Char; '\x40' : Char; '\x41' : Char; '\x42' : Char; '\x43' : Char; '\x44' : Char; '\x45' : Char; '\x46' : Char; '\x47' : Char; '\x48' : Char; '\x49' : Char; '\x4A' : Char; '\x4B' : Char; '\x4C' : Char; '\x4D' : Char; '\x4E' : Char; '\x4F' : Char; '\x50' : Char; '\x51' : Char; '\x52' : Char; '\x53' : Char; '\x54' : Char; '\x55' : Char; '\x56' : Char; '\x57' : Char; '\x58' : Char; '\x59' : Char; '\x5A' : Char; '\x5B' : Char; '\x5C' : Char; '\x5D' : Char; '\x5E' : Char; '\x5F' : Char; '\x60' : Char; '\x61' : Char; '\x62' : Char; '\x63' : Char; '\x64' : Char; '\x65' : Char; '\x66' : Char; '\x67' : Char; '\x68' : Char; '\x69' : Char; '\x6A' : Char; '\x6B' : Char; '\x6C' : Char; '\x6D' : Char; '\x6E' : Char; '\x6F' : Char; '\x70' : Char; '\x71' : Char; '\x72' : Char; '\x73' : Char; '\x74' : Char; '\x75' : Char; '\x76' : Char; '\x77' : Char; '\x78' : Char; '\x79' : Char; '\x7A' : Char; '\x7B' : Char; '\x7C' : Char; '\x7D' : Char; '\x7E' : Char; '\x7F' : Char; '\x80' : Char; '\x81' : Char; '\x82' : Char; '\x83' : Char; '\x84' : Char; '\x85' : Char; '\x86' : Char; '\x87' : Char; '\x88' : Char; '\x89' : Char; '\x8A' : Char; '\x8B' : Char; '\x8C' : Char; '\x8D' : Char; '\x8E' : Char; '\x8F' : Char; '\x90' : Char; '\x91' : Char; '\x92' : Char; '\x93' : Char; '\x94' : Char; '\x95' : Char; '\x96' : Char; '\x97' : Char; '\x98' : Char; '\x99' : Char; '\x9A' : Char; '\x9B' : Char; '\x9C' : Char; '\x9D' : Char; '\x9E' : Char; '\x9F' : Char; '\xA0' : Char; '\xA1' : Char; '\xA2' : Char; '\xA3' : Char; '\xA4' : Char; '\xA5' : Char; '\xA6' : Char; '\xA7' : Char; '\xA8' : Char; '\xA9' : Char; '\xAA' : Char; '\xAB' : Char; '\xAC' : Char; '\xAD' : Char; '\xAE' : Char; '\xAF' : Char; '\xB0' : Char; '\xB1' : Char; '\xB2' : Char; '\xB3' : Char; '\xB4' : Char; '\xB5' : Char; '\xB6' : Char; '\xB7' : Char; '\xB8' : Char; '\xB9' : Char; '\xBA' : Char; '\xBB' : Char; '\xBC' : Char; '\xBD' : Char; '\xBE' : Char; '\xBF' : Char; '\xC0' : Char; '\xC1' : Char; '\xC2' : Char; '\xC3' : Char; '\xC4' : Char; '\xC5' : Char; '\xC6' : Char; '\xC7' : Char; '\xC8' : Char; '\xC9' : Char; '\xCA' : Char; '\xCB' : Char; '\xCC' : Char; '\xCD' : Char; '\xCE' : Char; '\xCF' : Char; '\xD0' : Char; '\xD1' : Char; '\xD2' : Char; '\xD3' : Char; '\xD4' : Char; '\xD5' : Char; '\xD6' : Char; '\xD7' : Char; '\xD8' : Char; '\xD9' : Char; '\xDA' : Char; '\xDB' : Char; '\xDC' : Char; '\xDD' : Char; '\xDE' : Char; '\xDF' : Char; '\xE0' : Char; '\xE1' : Char; '\xE2' : Char; '\xE3' : Char; '\xE4' : Char; '\xE5' : Char; '\xE6' : Char; '\xE7' : Char; '\xE8' : Char; '\xE9' : Char; '\xEA' : Char; '\xEB' : Char; '\xEC' : Char; '\xED' : Char; '\xEE' : Char; '\xEF' : Char; '\xF0' : Char; '\xF1' : Char; '\xF2' : Char; '\xF3' : Char; '\xF4' : Char; '\xF5' : Char; '\xF6' : Char; '\xF7' : Char; '\xF8' : Char; '\xF9' : Char; '\xFA' : Char; '\xFB' : Char; '\xFC' : Char; '\xFD' : Char; '\xFE' : Char; '\xFF' : Char; ']' : Char; '^' : Char; '_' : Char; '`' : Char; 'a' : Char; 'b' : Char; 'c' : Char; 'd' : Char; 'e' : Char; 'f' : Char; 'g' : Char; 'h' : Char; 'i' : Char; 'j' : Char; 'k' : Char; 'l' : Char; 'm' : Char; 'n' : Char; 'o' : Char; 'p' : Char; 'q' : Char; 'r' : Char; 's' : Char; 't' : Char; 'u' : Char; 'v' : Char; 'w' : Char; 'x' : Char; 'y' : Char; 'z' : Char; '{' : Char; '|' : Char; '}' : Char; '~' : Char; '¡' : Char; '¢' : Char; '£' : Char; '¤' : Char; '¥' : Char; '¦' : Char; '§' : Char; '¨' : Char; '©' : Char; 'ª' : Char; '«' : Char; '¬' : Char; '­' : Char; '®' : Char; '¯' : Char; '°' : Char; '±' : Char; '²' : Char; '³' : Char; '´' : Char; 'µ' : Char; '¶' : Char; '·' : Char; '¸' : Char; '¹' : Char; 'º' : Char; '»' : Char; '¼' : Char; '½' : Char; '¾' : Char; '¿' : Char; 'À' : Char; 'Á' : Char; 'Â' : Char; 'Ã' : Char; 'Ä' : Char; 'Å' : Char; 'Æ' : Char; 'Ç' : Char; 'È' : Char; 'É' : Char; 'Ê' : Char; 'Ë' : Char; 'Ì' : Char; 'Í' : Char; 'Î' : Char; 'Ï' : Char; 'Ð' : Char; 'Ñ' : Char; 'Ò' : Char; 'Ó' : Char; 'Ô' : Char; 'Õ' : Char; 'Ö' : Char; '×' : Char; 'Ø' : Char; 'Ù' : Char; 'Ú' : Char; 'Û' : Char; 'Ü' : Char; 'Ý' : Char; 'Þ' : Char; 'ß' : Char; 'à' : Char; 'á' : Char; 'â' : Char; 'ã' : Char; 'ä' : Char; 'å' : Char; 'æ' : Char; 'ç' : Char; 'è' : Char; 'é' : Char; 'ê' : Char; 'ë' : Char; 'ì' : Char; 'í' : Char; 'î' : Char; 'ï' : Char; 'ð' : Char; 'ñ' : Char; 'ò' : Char; 'ó' : Char; 'ô' : Char; 'õ' : Char; 'ö' : Char; '÷' : Char; 'ø' : Char; 'ù' : Char; 'ú' : Char; 'û' : Char; 'ü' : Char; 'ý' : Char; 'þ' : Char; 'ÿ' : Char; +__ : Nat->Nat; 0 : Nat; 1 : Nat; 1 : Pos; 2 : Nat; 3 : Nat; 4 : Nat; 5 : Nat; 6 : Nat; 7 : Nat; 8 : Nat; 9 : Nat; ACK : Char; BEL : Char; BS : Char; CAN : Char; CR : Char; DC1 : Char; DC2 : Char; DC3 : Char; DC4 : Char; DEL : Char; DLE : Char; EM : Char; ENQ : Char; EOT : Char; ESC : Char; ETB : Char; ETX : Char; FF : Char; FS : Char; GS : Char; HT : Char; LF : Char; NAK : Char; NL : Char; NP : Char; NUL : Char; RS : Char; SI : Char; SO : Char; SOH : Char; SP : Char; SUB : Char; SYN : Char; SYX : Char; US : Char; VT : Char; __! : Nat->Nat; __*__ : Nat*Nat->Nat; __*__ : Pos*Pos->Pos; __+__ : Nat*Nat->Nat; __+__ : Nat*Pos->Pos; __+__ : Pos*Nat->Pos; __-?__ : Nat*Nat->?Nat; __/?__ : Nat*Nat->?Nat; __@@__ : Nat*Nat->Nat; __^__ : Nat*Nat->Nat; __div__ : Nat*Nat->?Nat; __mod__ : Nat*Nat->?Nat; __quot__ : Nat*Nat->?Nat; __rem__ : Nat*Nat->?Nat; abs : Nat->Nat; chr : Nat->?Char; max : Nat*Nat->Nat; min : Nat*Nat->Nat; ord : Char->Nat; pre : Nat->?Nat; suc : Nat->Nat; suc : Nat->Pos preds __<=__ : Nat*Nat; __<__ : Nat*Nat; __>=__ : Nat*Nat; __>__ : Nat*Nat; even : Nat; isDigit : Char; isLetter : Char; isPrintable : Char; odd : Nat end spec ExtBooleanAlgebra %% [...] %% = sort Elem ops 0 : Elem; 1 : Elem; __cap__ : Elem*Elem->Elem; __cup__ : Elem*Elem->Elem; compl : Elem->Elem preds __<=__ : Elem*Elem; __<__ : Elem*Elem; __>=__ : Elem*Elem; __>__ : Elem*Elem end spec Nat = sorts Pos < Nat; Pos ops +__ : Nat->Nat; 0 : Nat; 1 : Nat; 1 : Pos; 2 : Nat; 3 : Nat; 4 : Nat; 5 : Nat; 6 : Nat; 7 : Nat; 8 : Nat; 9 : Nat; __! : Nat->Nat; __*__ : Nat*Nat->Nat; __*__ : Pos*Pos->Pos; __+__ : Nat*Nat->Nat; __+__ : Nat*Pos->Pos; __+__ : Pos*Nat->Pos; __-?__ : Nat*Nat->?Nat; __/?__ : Nat*Nat->?Nat; __@@__ : Nat*Nat->Nat; __^__ : Nat*Nat->Nat; __div__ : Nat*Nat->?Nat; __mod__ : Nat*Nat->?Nat; __quot__ : Nat*Nat->?Nat; __rem__ : Nat*Nat->?Nat; abs : Nat->Nat; max : Nat*Nat->Nat; min : Nat*Nat->Nat; pre : Nat->?Nat; suc : Nat->Nat; suc : Nat->Pos preds __<=__ : Nat*Nat; __<__ : Nat*Nat; __>=__ : Nat*Nat; __>__ : Nat*Nat; even : Nat; odd : Nat end spec RichBoolean = sort Boolean ops False : Boolean; Not__ : Boolean->Boolean; True : Boolean; __And__ : Boolean*Boolean->Boolean; __Or__ : Boolean*Boolean->Boolean; compl : Boolean->Boolean preds __<=__ : Boolean*Boolean; __<__ : Boolean*Boolean; __>=__ : Boolean*Boolean; __>__ : Boolean*Boolean end