Você está na página 1de 15

Negociando a Aritmtica, Construindo Provas

Reproduo livre, em Portugus Brasileiro, do texto original de Donald Mackenzie para fins de estudo, sem vantagens pecunirias envolvidas. Todos os direitos preservados. Free reproduction, in Brazilian Portuguese, of Donald Mackenzies original text for study purposes. No pecuniary advantagens involved. Copyrights preserved. Donald Mackenzie (traduo de Fernando Manso) Sistemas computacionais tm sido um objeto de considervel interesse para os cientistas sociais desde os anos 60. Sua difuso, seus provveis efeitos sobre as organizaes, sobre os nveis de emprego e sobre a sociedade de uma forma geral, a evoluo da indstria computacional, so, dentre outros, tpicos que tem recebido considervel ateno. No entanto, sistemas computacionais como entidades matemticas tm permanecido em grande medida assunto de especialistas tcnicos. Neste artigo, eu tento restabelecer esse equilbrio argumentando que sistemas computacionais oferecem estudos de caso interessantes e contra-intuitivos para a sociologia da matemtica. O artigo discute dois aspectos diferentes de sistemas computacionais enquanto entidades matemticas. O primeiro o computador (e as calculadoras digitais avanadas) enquanto uma ferramenta aritmtica. A intuio poderia sugerir que a aritmtica feita por computador ou por calculadoras fosse totalmente no problemtica. A aritmtica, afinal de contas, o prprio paradigma do conhecimento seguro e consensual, e certamente, a calculadora ou o computador simplesmente eliminam o tdio e a propenso a erro da aritmtica efetuada por seres humanos. No entanto tal no o caso. No apenas necessria uma considervel habilidade, usualmente desconsiderada, para efetuar aritmtica confiavelmente mesmo em simples calculadoras[1]; alm disso, tem havido disputas significativas com relao a natureza da aritmtica a ser implementada, pelo menos quando os nmeros a serem trabalhados no so inteiros. Diferentes aritmticas computacionais tm sido propostas, e a mais prxima aproximao de uma aritmtica computacional consensual, o padro do Instituto dos Engenheiros Eltricos e Eletrnicos para a aritmtica de ponto flutuante, teve de ser negociado e no deduzido a partir da aritmtica humana existente. O segundo aspecto de sistemas computacionais que ser discutido aqui a prova matemtica da exatido de programas ou de projetos de hardware. Na medida em que sistemas computacionais so, cada vez mais, usados em situaes onde a segurana nacional e vidas humanas dependem deles, tem havido uma demanda crescente por tais provas matemticas no lugar de, ou em acrscimo aos, testes empricos. Isto tem interesse do ponto de vista da sociologia do conhecimento porque desloca a prova do mundo dos matemticos e lgicos para o mundo dos engenheiros, corporaes e advogados. Embora a prova matemtica seja buscada exatamente por conta da certeza que ela usualmente carrega, a construo de provas da exatido de sistemas computacionais, novamente, revela-se no ser uma simples aplicao da matemtica. Ela envolve

negociar o que consiste uma prova. Em 1987, Pelaez, Fleck e eu predissemos que a demanda por provas da exatido de sistemas computacionais levaria inevitavelmente a que os tribunais regulamentem sobre a natureza da prova matemtica. Este captulo desenvolve a discusso do captulo precedente sobre a controvrsia que quase j confirmou essa predio; ele tambm explora questes mais gerais sobre a sociologia da prova no contexto de sistemas computacionais.

Negociando a aritmtica
A aritmtica humana consensual nas sociedades industriais avanadas. Tipicamente, no h discordncias sobre o resultado correto de qualquer clculo. Por exemplo, at onde eu sei, nunca houve disputas cientficas nas quais as partes tivessem discordado ao nvel da aritmtica. Alm disso h certas leis ideais que, todos concordamos, mantm-se independentemente de qualquer clculo particular. Por exemplo, ns concordamos que a adio e a multiplicao dos nmeros reais devem ser comutativa e associativa, isto : a+b=b+a (a + b) + c = a + (b + c) axb=bxa (a x b) x c = a x (b x c) quaisquer que sejam os valores de a, b, e c. Na verdade esse status consensual da aritmtica tem sido tomado como uma indicao de um limite auto-evidente da sociologia do conhecimento. Poderia parecer que implementar a aritmtica numa calculadora ou num computador fosse simples e direto. No entanto esse no o caso. As dificuldades so maiores na forma de aritmtica usada no tipo de clculo tipicamente encontrado em trabalhos cientficos: a aritmtica de ponto flutuante, que o anlogo computacional da conhecida notao cientfica para expressar nmeros. Nesta notao, um nmero expresso em trs partes: um sinal positivo ou negativo (o primeiro usualmente implcito); um conjunto de dgitos decimais (o significando ou mantissa), incluindo o ponto decimal; e um segundo conjunto de dgitos (expoente), que uma potncia de 10. Assim 1.245.000 poderia ser expresso em notao cientfica como +1,245 x 106, e - 0.0006734 como - 6,734 x 10-4. A vantagem da notao cientfica que permitindo o ponto decimal flutuar desta forma leva a um formato mais econmico e mais facilmente manipulvel do que a representao padro, onde o ponto decimal fixo em sua posio. A aritmtica computacional de ponto flutuante mantm essa flexibilidade e bastante similar, exceto nos seguintes aspectos: A representao decimal (base 10) hoje incomum; as representaes hexadecimal (base 16) e binria (base 2) so mais comuns. Uma vez que o episdio que quero discutir se refere a aritmtica binria, vamos nos concentrar nela. Cada dgito 1 ou 0: o decimal 3, por exemplo, expresso como 11, o decimal 4 como 100 e assim por diante. O expoente

uma potncia de 2, e o equivalente do ponto decimal conhecido como ponto binrio. O sinal, similarmente, expresso com um dgito binrio, tipicamente 0 para nmeros positivos e 1 para nmeros negativos. Uma importante deciso tem de ser tomada a respeito do nmero de dgitos binrios (bits) no significando e no expoente. Na aritmtica a ser discutida o formato bsico tem um dgito binrio para expressar o sinal, oito bits para expressar o expoente e 23 para a mantissa, totalizando 32 bits. O nmero total de bits (algumas vezes chamado de comprimento da palavra) de considervel importncia, uma vez que a maioria dos computadores modernos procura processar todos os bits que constituem um nmero em paralelo e no um aps o outro. Quanto maior o nmero de bits a ser processado simultaneamente, maior a complexidade do hardware necessrio. Qualquer sistema de ponto flutuante, em princpio, permite mltiplas representaes do mesmo nmero. Por exemplo, -0.0006734 poderia ser expresso como 67.34 x 10-5 assim como tambm 6.734 x 10-4 ou -0.6734 x 10-3. No entanto, sistemas computacionais de ponto flutuante, tipicamente, empregam uma representao normal nica de cada nmero no nulo. Nesta representao, h sempre um bit no nulo a esquerda do ponto binrio. Na medida em que este bit tem de ser 1, ele no precisa ser guardado explicitamente, e apenas a parte do significando a direita do ponto binrio (conhecido por razes bvias como a frao) explcita. H portanto vrias decises a serem tomadas para implementar a aritmtica computacional de ponto flutuante. Que base deve ser usada? Que tamanho de palavra, que tamanho de significando, que tamanho de expoente? Deve um bit de sinal de 1 representar nmeros negativos ou positivos? Como o zero deve ser representado? Que mtodos de arredondamento devem ser usados? O que deve ser feito se o resultado de um clculo exceder o maior valor absoluto expressvel no sistema escolhido (i.e. se ele overflows), ou se ele cai abaixo do menor (i.e., se ele underflows)? O que deve ser feito se um usurio tenta uma operao sem sentido aritmtico, tal como dividir zero por zero? Diferentes fabricantes de computador (como tambm, uma vez que se tornou possvel implementar aritmtica de ponto flutuante em calculadoras eletrnicas, diferentes fabricantes de calculadoras) adotaram solues diferentes para essas questes. Isto foi, patentemente, uma fonte de alguma dificuldade prtica, uma vez que tornou difcil usar um programa numrico escrito para um computador num outro, mesmo quando uma linguagem de programao padro tal como o Fortran era usada. Mas isso importa mais profundamente do que essa dificuldade? Os resultados de diferentes decises eram realmente aritmticas diferentes ou eles eram simplesmente diferentes mas formas essencialmente equivalentes de implementar a nica aritmtica verdadeira? A resposta depende da reao ao que pode ser chamado de clculos anmalos. Em algumas circunstncias mquinas diferentes produzem resultados substancialmente diferentes para o mesmo clculo. Em outros casos, a aritmtica da mquina viola leis consensuais da aritmtica humana. Pequenas diferenas entre o mesmo clculo realizado em mquinas diferentes so comuns, e especialistas no campo podem produzir casos de resultados que diferem consideravelmente. Um especialista cita um problema de juros compostos que produziu quatro respostas diferentes quando feito em calculadoras de quatro tipos diferentes: $331.667,00, $293.539,16, $334.858,18, e $331.559,38. Ele

identifica mquinas em que a/1 no igual a a (como deveria ser na aritmtica humana) e ep - pe no igual a zero. Diferentes reaes aos clculos anmalos podem ser categorizadas segundo o esquema desenvolvido por Imre Lakatos na sua celebrada anlise da evoluo do teorema de Euler sobre o relacionamento entre o nmero de faces (F), arestas (E) e vrtices (V) de um poliedro. Lakatos mostrou que tentativas de provar o relacionamento V E + F = 2 esbarravam em contra-exemplos: figuras que poderiam ser tidas por poliedro mas que no obedeciam lei. Uma resposta a estas figuras anmalas foi o que Lakatos chamou excetuando a exceo primitiva: simples indiferena a sua existncia. Esta resposta caracteriza bem o que parece ter sido a maioria das respostas aos clculos anmalos do computador e das calculadoras. A maioria dos usurios est provavelmente inconsciente da possibilidade de clculos anmalos ou no se preocupam com eles no mesmo sentido que continuamos a atravessar pontes tranqilamente embora tenhamos conhecimento de que algumas caram. E tambm, para muitos projetistas de computador, clculos anmalos parece ter estado bem baixo na lista de assuntos exigindo ateno, se que o item est na lista. Uma estratgia do tipo excetuando a exceo mais sofisticada foi citar o vasto volume de clculos que so executados de forma perfeitamente satisfatria, e argumentar que os clculos anmalos ocorrem em problemas que no foram bem formulados. Um problema bem formulado era um no qual pequenas alteraes nos dados provocavam apenas pequenas alteraes nos resultados; a soluo empregava um algoritmo que era neste sentido numericamente estvel. A tcnica de anlise de erros para trs, recentemente desenvolvida, foi usada, como justificativa dessa resposta, para discriminar entre problemas bem formulados e aqueles que no estavam bem formulados. Computadores e calculadoras funcionavam confiavelmente para problemas bem formulados. Se clculos patolgicos e problemas degenerados fossem evitados (o uso desses termos pode ser tomado como uma indicao que o excetuando a exceo estava se transformando naquilo que Lakatos chamou excetuando monstros) no haveria dificuldades. No entanto, um pequeno nmero de cientistas da computao positivamente procurava monstros. Um lder entre eles era o professor W. Kahan que mantinha uma lotao conjunta no Departamento de Matemtica e no Departamento de Engenharia Eltrica e Cincias da Computao em Berkeley. A abordagem de Kahan um exemplo do que Lakatos chama a estratgia dialtica, segundo a qual anomalias e irregularidades so bem vindas e vistas como a justificativa para novas abordagens, novos conceitos e novos mtodos. Kahan tem sido um reformador no satisfeito com o corrente estado da aritmtica de ponto flutuante do computador e calculadoras e constantemente procurando conceber, e construir suporte para, formas de melhor-la. Ele procurava deliberadamente descobrir e publicar anomalias que pudessem ser usadas para mostrar que as diferenas entre as aritmticas computacionais eram srias e conseqentes. A primeira oportunidade que teve Kahan de reformar a aritmtica na direo que desejava foi uma competio entre dois importantes fabricantes de calculadoras sofisticadas, a Texas Instruments e a Hewlett- Packard. TI questionava a preciso das calculadoras HP. A HP respondia alegando que as mquinas de sua competidora apresentavam mais anomalias. Um executivo da Hewlett-Packard, Dennis Harms, viu uma vantagem em tentar fortalecer a posio de sua companhia a esse respeito, e empregou Kahan como

consultor para o projeto da aritmtica das calculadoras de nova gerao, possibilitando assim que Kahan incorporasse suas idias nas calculadoras. A prxima oportunidade de Kahan aconteceu em 1977 quando a firma lder de microprocessadores, Intel, comeou a desenvolver um chip de silcio especificamente para executar a aritmtica de ponto flutuante. Os microprocessadores existentes implementavam a aritmtica de ponto flutuante em software em vez de em hardware, enquanto as unidades de ponto flutuante dos grandes computadores eram multichip. O Intel i8087, como o chip foi posteriormente batizado, foi projetado para ser um coprocessador de ponto flutuante, trabalhando ao lado do chip principal processador num microprocessador para melhorar sua performance aritmtica. Jonh Palmer, o engenheiro chefe do projeto do i8087 havia assistido aulas com Kahan como aluno de graduao e foi com ele se aconselhar. Palmer rejeitou a idia de adotar a aritmtica IBM apesar de seu uso muito difundido; Kahan acreditava que essa aritmtica era inferior. A aritmtica do fabricante lder de minicomputadores, a Digital Equipment Corporation, tambm foi rejeitada. Palmer, estava, no entanto, procurando no apenas diferenciao de produto. Ele estava preocupado com o fato de que se decises erradas fossem tomadas seria impossvel compartilhar alguns programas entre diferentes caixas todas estampando o logotipo Intel, e ele queria evitar, para a aritmtica de ponto flutuante em microprocessadores a situao catica que ora existia nos ambientes de mainframes e minicomputadores. A Intel e outras fabricantes de chips do vale do Silcio suportaram o estabelecimento de um comit para considerar padres para a aritmtica de ponto flutuante. A iniciativa do comit partiu de um consultor independente, Robert Stewart, que era ativo na Sociedade da Computao do Instituto dos Engenheiros Eltricos e Eletrnicos (IEEE), sob cuja gide o comit foi estabelecido. Stewart recrutou para o comit Kahan e representantes da Intel, outros fabricantes de chips, e fabricantes de minicomputadores. Richard Delp foi designado por Stewart como o primeiro chefe do grupo de trabalho. A Intel, que trabalhava em outros projetos, concordou em retardar a concluso da aritmtica do i8087 enquanto o comit deliberava, muito embora ela claramente esperava que o padro final seria similar ao que ela j havia desenvolvido. Negociar a aritmtica revelou ser um longo processo. O comit iniciou seus trabalhos em setembro de 1977 e o padro 754 da IEEE s foi adotado em 1985. A natureza geral dos interesses envolvidos era clara. A menos que o comit seguisse a rota fcil de escrever um padro geral que abarcasse as aritmticas existentes mais amplamente utilizadas (uma opo que foi considerada mas rejeitada); ou a menos que ele optasse por uma aritmtica que fosse radicalmente diferente de qualquer outra existente, o que quer que ele decidisse favoreceria s empresas cujas prticas existentes fossem mais prximas do padro e prejudicaria as empresas cujas prticas fossem mais distantes do padro. Estas ltimas empresas seriam foradas a uma escolha desfavorvel. Se elas mantivessem suas aritmticas existentes, seus mercados poderiam diminuir como um resultado de os usurios preferirem mquinas que implementassem o padro. Se elas mudassem, estariam jogando fora um investimento considervel de tempo e dinheiro, e poderia haver embaraosas incompatibilidades entre suas novas mquinas e as velhas. No final das contas, o comit chegou a duas aritmticas proximamente alinhadas com os grandes interesses corporativos. Uma era essencialmente a aritmtica empregada pela

Digital Equipment Corporation (DEC), fabricante lder de minicomputadores. As mquinas VAX da DEC eram amplamente utilizadas em computao cientfica e sua aritmtica era considerada boa e respeitvel mesmo pelos seus crticos. A outra era uma aritmtica proposta por Kahan, seu aluno de graduao Jerome Coonem, e Harold Stone, Diretor de Arquiteturas Avanadas do Laboratrio Yorktown Heights da IBM. No surpreendentemente, em vista da colaborao entre Kahan e Palmer da Intel, esta proposta era muito similar a que a Intel estava em vias de implementar. O esquema Kahan-Coonen-Stone tinha vrios aspectos interessantes, tais como o tratamento do zero. Em seu formato bsico, eles optaram por aquilo que chamado de zero normalizado. O zero expresso apenas por um significando zero e um expoente zero (0 x 20). A combinao do significando zero com um expoente no nulo (0 x 21, 0 x 22, etc.) no permitida. Mas eles permitem que o bit de sinal assuma os dois valores, e permitem que seu valor seja significativo. Em outras palavras, diferente da aritmtica humana consensual, que contm apenas um zero, sua aritmtica contem um zero positivo e um zero negativo com a regra, por exemplo, que a raiz quadrada de 0 0. Este e outros aspectos de sua aritmtica eram, contudo, relativamente incontroversos. O ponto mais controverso entre sua proposta e a principal aritmtica alternativa era o underflow. Diferente da aritmtica dos nmeros reais, onde no h um nmero prximo de zero, e nmeros indefinidamente pequenos so possveis, a aritmtica computacional contm um limite inferior para o tamanho do nmero que pode ser representado. Por exemplo, 2-126 ou aproximadamente 10-38, o menor nmero possvel na representao normal do formato bsico do esquema Kahan-Coonen-Stone. Como a maioria das aritmticas computacionais existentes, a aritmtica do DEC simplesmente representava todos os nmeros to precisamente quanto possvel at que o nmero prximo a zero fosse alcanado. Se um clculo desse um resultado menor do que este nmero pequeno, o resultado era armazenado como zero. Flush-to-zero underflow como este esquema foi geralmente chamado. Kahan e seus colegas propuseram um princpio diferente de underflow gradual. Eles introduziram um conjunto especial de nmeros desnormalizados menores do que o menor nmero no formato normal. Como foi notado acima, no formato normal de ponto flutuante o dgito esquerda do ponto binrio sempre 1. Num nmero desnormalizado zero. Nmeros desnormalizados so criados deslocando-se para a direita o significando de tal forma que o expoente sempre permanea dentro do domnio expressvel. Num sistema onde o menor nmero normal 2-126, 2-127 poderia ter a expresso desnormalizada (0.1 em binrio) x 2-126, e 2-128 (0.01 em binrio) x 2-126 e assim por diante. claro que isso significa que a preciso diminuiria, na medida em que um ou mais dgitos significativos so perdidos no deslocamento para a direita do significando. Mas isso pareceu aos proponentes um preo aceitvel a pagar por essa aproximao mais gradual ao zero. Seu argumento contra o que muitos tomaram como sendo o procedimento bvio da DEC era que, usando esse ltimo, na medida em que se aproxima do zero as diferenas entre nmeros sucessivos diminui at o menor nmero, cuja distncia a zero era muito maior que a distncia ao prximo maior. No underflow gradual as diferenas entre nmeros sucessivos diminuam monotonicamente at o zero. O underflow gradual se tornou o foco de ataques na aritmtica proposta por Kahan, Coonen, e Stone:

A interconectividade dos aspectos bsicos do padro proposto complicou as tentativas de se opor a ele. Os primeiros desafios dentro do sub-comit no eram facilmente focados em aspectos simples do sistema de numerao proposto e de sua codificao, uma vez que muitas das escolhas de projeto eram interconectadas. Esses desafios, em ltima anlise, focavam na proposta como um todo e, naturalmente, tendiam a se mover para seu ponto de menos resistncia. Assim, foi possvel para o underflow gradual um dos aspectos mais tranqilos do sistema tornar-se seu mais contencioso. No havia nenhum argumento decisivo que provasse a superioridade de algum dos dois esquemas. Os proponentes do esquema Kahan-Coonen-Stone apontavam anomalias causadas, segundo eles, pelo esquema flush to zero que seriam corrigidas pelo underflow gradual: Considere a simples computao (Y X) + X quando (Y - X) underflows. O esquema gradual sempre retornar Y exatamente, flush to zero retornar X ... Poderamos olhar isso como um outro exemplo isolado, mas eu prefiro v-lo como a preservao da lei associativa da adio. Ou seja, com o underflow gradual sempre teremos (Y - X) + X = Y + (-X + X). Isto decisivo, em minha opinio. Os defensores do esquema DEC mais tradicional poderiam, contudo, tambm apontar problemas potenciais com o underflow gradual. Multiplicao de nmeros desnormalizados por nmeros maiores do que 1 (ou diviso por nmeros menores do que 1) pode gerar imprecises significativas. Se tal produto (ou quociente) est na faixa ordinria de nmeros, ele no pode ser representado na forma desnormalizada por conta do bit escondido usado na aritmtica KCS. No entanto, o operando desnormalizado tem menos bits (talvez muito menos) do que o nmero prescrito (de bits) para o seu nvel de preciso. Assim o produto (ou quociente) pode no pior caso conter apenas um bit vlido. KCS especifica dois modos de lidar com este problema. O primeiro modo, dito modo advertncia, obrigatrio: um flag de invalidez ligado, e um smbolo NaN (no um nmero) armazenado como resultado ... O outro modo, dito normalizar, opcional: se presente, e selecionado, o produto possivelmente muito impreciso armazenado como um nmero ordinrio, nenhum flag ligado, e, obviamente, o acompanhamento do efeito do underflow original impossvel. Nesta vez, uma exceo de operao ilegal avisada quando um nmero desnormalizado multiplicado por um valor de 2 ou maior. Mas em inspeo mais prxima, h nmeros desnormalizados prximos da faixa normalizada que exibem um comportamento mais errtico. O nmero desnormalizado x 2-126, por exemplo, gerar uma exceo de operao invlida quando multiplicado por 5, mas no quando multiplicado por 6. Quando multiplicado por 8 uma exceo ser novamente gerada ... Este efeito causado porque a exceo para a multiplicao ocorre quando se tenta armazenar um nmero desnormalizado no formato bsico. Quando multiplicado por 8 = 1 x 23, o resultado x 2-123 que desnormalizado. Mas a multiplicao por 6 = 3/2 x 22 d 9/8 x 2-124, que normalizado. Estas objees poderiam, por sua vez, ser refutadas:

Como qualquer ferramenta nova, possvel utilizar mal a facilidade e ela falhar ... Eu no acredito que a facilidade introduza falhas em processos que previamente funcionavam [no esquema flush to zero]. A propenso das duas aritmticas a gerar erros e clculos anmalos no era a nica questo a ser considerada. Havia, por exemplo, pouca dvida que o underflow gradual era mais complicado de implementar do que o flush-to-zero; ele teria, portanto, custos em dinheiro e (talvez) no tempo devido s operaes aritmticas tais como a multiplicao. Ele poderia dificultar o policiamento do padro proposto, uma vez que dado sua complicao, os fabricantes poderiam escolher implement-lo em software e no em hardware. Finalmente, o esquema DEC tinha simplesmente a enorme vantagem de ser aquele j empregado nos minicomputadores cientficos mais populares no mundo. Assim, nada abstrato garantia que o esquema Kahan- Coonen-Stone venceria: nas palavras do professor Kahan no era uma concluso inevitvel. Em seu favor estava a composio do grupo de trabalho, os fatos da geografia, e seu status como documento de trabalho original do grupo. Mary Payne da DEC baseada em Massachusets comentou: Os membros ativos (e votantes) do grupo de trabalho so no na maioria de fabricantes de minicomputadores e semicondutores, da Academia, e de fornecedores de software porttil. No h virtualmente nenhuma representao da indstria de mainframes e de usurios ordinrios- pessoas que escrevem programas para seu uso prprio (ou de seus empregadores). A maioria dos membros ativos da rea da baa de So Francisco, e todos os encontros se deram nessa rea, a menos de um. Outros, contudo, apontam para a influncia da personalidade forte e persuasiva de Kahan. O prprio Kahan entende como importante duas demonstraes da viabilidade tcnica do underflow gradual (a Intel o implementou no software microcdigo do prottipo i8087, e um dos alunos de Kahan, George Taylor, projetou uma placa de processador para VAX da DEC que foi reconhecida como uma executora bem sucedida do underflow gradual), junto com o suporte qualificado para o underflow gradual dado pelo bem conhecido analista de erros, Professor G. W. Stewart III da Universidade de Maryland, que havia sido contratado para investigar o caso pela DEC. Na primavera de 80, numa votao do comit, o esquema KCS obteve a maioria necessria de 2/3 de votos para adoo. O esquema ainda levou vrios anos para passar pelos altos comits do Instituto de Engenheiros Eltricos e Eletrnicos, e foi finalmente aprovado pelo Conselho de Padres do IEEE em maro de 85 e pelo Americam National Standards Institute (ANSI/IEEE) como o padro 754 em julho de 85. No um padro universal. A maioria dos supercomputadores (como os Cray), mainframes (como as mquinas IBM) e minicomputadores (como os VAXs da DEC) no o cumprem. No entanto no se chegou a nenhum outro padro coletivo competidor. Assim, existe um ciclo virtuoso: na medida em que o padro 754 IEEE se torna mais popular, os problemas envolvidos em portar programas numricos entre mquinas diminuem, e mais software escrito para o padro 754, o que aumenta sua popularidade. Os proponentes de novas tecnologias adotam o padro 754 para que os usurios no tenham de reescrever programas para mover para essas novas tecnologias.

O que aconteceu assim uma verso de uma forma de fechamento tpico dentro da tecnologia. Nas palavras de Brian Arthur: Freqentemente, tecnologias mostram retornos crescentes de adoo quanto mais elas so adotadas mais elas so melhoradas... Quando duas ou mais tecnologias de retornos crescentes competem por adotantes, eventos fortuitos insignificantes podem dar a uma das tecnologias uma vantagem inicial de adoo. Ento mais experincia ganha com a tecnologia e assim ela melhora; ela ento mais adotada, e melhora mais. Assim, a tecnologia que por sorte tenha um bom comeo pode eventualmente aambarcar o mercado dos adotantes potenciais, desbancando, gradativamente as outras tecnologias. H os que negam que tenha sido institucionalizada a melhor aritmtica computacional possvel, e os que atribuem a adoo do padro a eventos fortuitos e no aos mritos intrnsecos que lhe atribuem seus proponentes. Essa disputa, contudo, agora em certo sentido irrelevante: o prprio processo da institucionalizao do padro lhe d vantagens prticas que tornam improvvel sua substituio por um competidor.

Construindo provas
Conforme notado no captulo 7, tem sido argumentado influentemente que a complexidade de sistemas computacionais limita a extenso at onde o teste emprico pode demonstrar a exatido de um software ou de um projeto de hardware. Na medida em que o teste de programas no pode normalmente ser exaustivo, ele pode ser uma forma muito efetiva de mostrar a presena de falhas, mas ele inadequado para mostrar sua ausncia. Cientistas computacionais matematizantes tm percebido que s h uma rota segura para programas ou projetos de hardware serem implementaes demonstravelmente corretas de suas especificaes: prova matemtica dedutiva. A nica forma efetiva de se aumentar significativamente o nvel de confiana de um programa dar um prova convincente de sua exatido. Nos anos 80, esses argumentos, originalmente acadmicos, comearam a ser adotados pelos responsveis por sistemas computacionais que fossem crticos para as reas de segurana nacional ou segurana humana. O primeiro a atuar sobre eles foi o Departamento de Defesa americano que em 1983 estabeleceu seus Critrios de Avaliao de Sistemas Computacionais Confiveis, conhecido como Livro Laranja pela cor da capa do documento que os continha. O Livro Laranja estabelecia uma hierarquia de critrios a serem aplicados a sistemas computacionais que continham informao crtica segurana nacional. Para obter a avaliao mais alta Classe A1 (Projeto Verificado) - exigia-se uma prova matemtica de que o projeto do sistema se conformava a um modelo formal do que constitua segurana. Na Europa, a demanda por prova matemtica fez-se mais presente sobre sistemas computacionais crticos segurana humana do que segurana nacional (embora critrios Europeus anlogos aos do Livro Laranja tenham sido emitidos). Em 1986, o Conselho Assessor de Pesquisa Aplicada e Desenvolvimento do governo britnico passou a exigir prova matemtica para o caso de sistemas cuja falha pudesse resultar em mais que dez mortes, e em 1991 o padro interino 00-55 da Defesa passou a exigir prova matemtica de que os programas mais cruciais segurana fossem implementaes corretas de suas especificaes.

Nesses documentos, com exceo do mais recente (o Padro 00-55 da Defesa, discutido abaixo), a noo de prova foi tipicamente usada como se seu significado no fosse problemtico. Em 1987, Pelaez, Fleck e eu especulamos que este uso no problemtico no sobreviveria entrada da prova nos domnios comerciais e legais. Predissemos que no tardaria o dia em que os tribunais teriam que decidir sobre o que constitui um procedimento de prova matemtica. Esta predio estava baseada em consideraes da sociologia do conhecimento esboadas no captulo 1 e na variao considervel, revelada pela histria da matemtica, das formas de argumento que tem sido tomadas como constituindo provas. Por exemplo, Judith Grabiner mostrou como argumentos que satisfizeram matemticos no sculo XVIII foram rejeitados como no constituindo provas pelos seus sucessores no sculo XIX, tal como Cauchy. Nossa predio se baseava no pressuposto de que tentativas de provar a exatido do projeto de sistemas computacionais trariam luz discordncias similares sobre a natureza da prova. Em 1991, a predio de litgio emergiu na disputa, discutida no captulo 7, sobre se a cadeia de raciocnio como era ento referida conectando o projeto do microprocessador VIPER a sua especificao poderia ser legitimamente chamada de prova. A falncia da litigante, Charter Technologies Ltd., evitou que o caso fosse para os tribunais. A disputa sobre a VIPER no deveria ser vista como inteiramente sui generis. O que estava em questo (pelo menos potencialmente) no era meramente o status de uma cadeia especfica de raciocnio matemtico, mas tambm o significado de prova matemtica um assunto que claramente vai alm das particularidades deste episdio. Este ser o foco do restante do presente captulo. Um significado de prova sumariado por Robert Boyer e J. Strother Moore, importantes proponentes do uso de sistemas computacionais para provar teoremas matemticos (e colegas de dois dos crticos da prova do VIPER, Bishop Brock e Warren Hunt), como se segue: Uma prova matemtica formal uma seqncia finita de frmulas, onde cada elemento um axioma ou o resultado da aplicao de um conjunto fixo de regras mecnicas a frmulas prvias na seqncia. A aplicao deste critrio ao VIPER no foi nunca publicamente desafiada antes ou durante o litgio. A defesa do ministrio contra as alegaes do litigante um documento confidencial. A resposta publicada (de conhecimento deste autor) por um membro do time VIPER para criticar a alegao da prova no tentou uma refutao. De qualquer forma, o ru no processo era o ministrio e no os membros individuais do time, de tal forma que a linha de argumentos adotada pode no ter sido deles. No entanto, um ataque noo formal de prova foi a base da defesa da VIPER montada, aps o encerramento do litgio, por Martyn Thomas, diretor da software house Prxis: Ns temos que ter cuidado ao restringir o termo prova a uma abordagem extremamente formal da verificao. Se prova significa apenas uma verificao axiomtica atravs de provadores de teoremas, a maior parte da matemtica no provada e no provvel. Os processos sociais da prova so suficientemente bons para engenheiros em outras disciplinas, suficientemente bons para os matemticos e suficientemente bons para mim... Se ns reservarmos a palavra prova para as atividades dos seguidores de Hilbert estaremos desperdiando uma palavra til e correndo o risco de extrapolar os resultados de suas atividades.

David Hilbert (1862 1943) era um matemtico formalista cuja definio de prova era em grande parte similar quela dada acima de Boyer e Moore. A tradio formalista encabeada por Hilbert procurava quebrar a conexo entre smbolos matemticos e seus referentes fsicos ou mentais. Smbolos, dizia o formalista, so apenas marcas sobre o papel, destitudos de significado intrnseco. Provas so construdas pela manipulao desses smbolos segundo as regras de transformao da lgica formal regras que assumem uma precisa forma mecnica. Apesar da considervel influncia do formalismo dentro da matemtica, nem todas as provas matemticas tm essa forma. A maioria mais curta, de mais alto nvel, e mais informais. Parte da razo para isso o simples tdio de se produzir provas formais, e o seu tamanho; isto explica tambm uma grande parte da atrao dos sistemas geradores de provas automticos e semi-automticos, tais como o sistema HOL usado na prova do VIPER ou o provador automtico de teoremas desenvolvido por Boyer e Moore. A natureza relativamente informal de muito das provas matemticas foi um recurso para a defesa da alegao de prova do VIPER, conforme mostra a citao acima de Thomas. Ela tambm foi a base de um ataque geral amplamente debatido sobre verificao formal de programas, um artigo de 1979 de Richard de Millo do Instituto de Tecnologia da Gergia e Richard Lipton e Alan Perlis do Departamento de Cincia da Computao da Universidade de Yale. Provas de teoremas em matemtica e verificaes formais de programas de computador eram entidades radicalmente diferentes, eles argumentavam: Uma prova no um bonito objeto abstrato com uma existncia independente. Nenhum matemtico compreende uma prova, se recolhe na cadeira, e suspira feliz com o conhecimento que ele pode agora estar certo da verdade do seu teorema. Ele corre para o hall e procura algum para escut-lo. Ele invade a sala de colegas e toma conta do quadro negro. Ele dispensa compromissos e leva sua nova idia a seminrios. Ele tira seus alunos graduados de suas dissertaes para ouvi-lo. Ele se pe ao telefone e conversa com seus colegas no Texas, Toronto... Aps internalizao suficiente, transformao suficiente, generalizao suficiente, uso suficiente e conexo suficiente, a comunidade matemtica decide, eventualmente, que os conceitos centrais no teorema original, agora talvez j bastante alterados, tm estabilidade. Se as vrias provas parecem corretas e os resultados so examinados de suficientes ngulos, ento a verdade do teorema considerada estar estabelecida. O teorema, ento, tido como verdadeiro no sentido clssico - isto , no sentido de que ele poderia ser demonstrado por lgica dedutiva formal, embora para quase todos os teoremas tal deduo nunca ocorreu e nem ocorrer. Provas matemticas aumentam nossa confiana na verdade das afirmaes matemticas, apenas aps elas terem passado pelos mecanismos sociais da comunidade matemtica. Estes mesmos mecanismos condicionam as chamadas provas de software, as longas verificaes formais que correspondem, no ao trabalho da prova matemtica, mas a estrutura lgica imaginria que o matemtico evoca para descrever seu sentimento de crena. Verificaes no so mensagens; uma pessoa que procure outros para lhes contar de sua ltima verificao vai se sentir um pria social. Ningum vai estar interessado. Verificaes no podem ser lidas prontamente. Algum leitor pode at, num esforo herico, dar uma vista dolhos em uma das menores, mas isso no leitura. Sendo ilegveis e, literalmente, incontveis, verificaes no podem ser internalizadas,

transformadas, generalizadas, usadas, conectadas a outras disciplinas e posteriormente incorporadas em uma conscincia comunitria. Elas no podem adquirir credibilidade gradualmente, como um teorema matemtico pode. Ou se acredita nelas cegamente como um puro ato de f, ou elas so sumariamente rejeitadas. O artigo de De Millo-Lipton-Perlis provocou uma crtica spera dos defensores da prtica da verificao de programas. Um desses escreveu: Eu sou um desses clssicos que acredita que um teorema pode ou no pode ser derivado a partir de um conjunto de axiomas. Eu no acredito que a veracidade de um teorema possa ser decidida por eleies. Edsger Dijkstra, um dos lderes do movimento de matematizao da cincia computacional, descreveu o artigo de De Millo-Lipton-Perlis como um panfleto poltico da idade mdia. Interessante o registro, no entanto, de que Dijkstra defendia provas de programas curtas, elegantes e humanas (no mecnicas). Ele aceitava que as comunicaes entre matemticos so um ingrediente essencial da nossa cultura matemtica, e concedia que longas provas formais so no convincentes. E acrescentava: com relao a idia de que provas so to chatas que no podemos confiar nelas a menos que sejam verificadas mecanicamente, eu tenho objees quase filosficas, porque considero provas matemticas como uma reflexo do meu entendimento e entendimento algo que ns no podemos delegar a outra pessoa nem a uma mquina. Pelo menos trs posies disputavam no debate provocado por De Millo, Lipton e Perlis: a verificao formal e mecnica de programas e projetos de hardware; a negao de que a verificao confere validade como a conferida pela prova em matemtica; e a superioridade da prova humana sobre a prova da mquina. Nenhum fechamento definitivo do debate foi alcanado dentro da cincia da computao, e a validade da analogia entre provas em matemtica e verificaes formais de sistemas computacionais permanece controversa. Dentro da matemtica, tambm, o status das provas apoiadas por computador tem sido objeto de controvrsia. A controvrsia cristalizou mais claramente em torno da prova baseada em computador, feita em 1976, por Kenneth Appel e Wolfgang Haken sobre a conjectura das quatro cores. Os defensores desta prova sumariaram pelo menos algumas objees e sua defesa como se segue: A maioria dos matemticos que foram educados antes do desenvolvimento dos rpidos computadores tende a no ver o computador como uma ferramenta rotineira para ser usada em conjuno com outras ferramentas mais velhas e mais tericas no avano do conhecimento matemtico. Assim eles sentem intuitivamente que se um argumento contem partes, que no so verificveis pelo clculo manual, ele est num terreno bastante inseguro. H uma tendncia de sentir que a verificao dos resultados do computador por programas de computador independentes no to certa quanto a verificao manual independente da prova dos teoremas, provados na forma padro. Este ponto de vista razovel para aqueles teoremas cujas provas so de tamanho moderado e altamente tericas. Quando as provas so longas e altamente computacionais, pode ser argumentado que mesmo quando a verificao manual possvel, a probabilidade de erro humano consideravelmente maior do que a do erro da mquina. Embora a questo geral do status das provas formais geradas por computador permanea em disputa, h sinais de que no nvel do estabelecimento de padres para os sistemas de

computador crticos quanto a segurana, nacional ou humana, a disputa est sendo vencida na prtica pelos proponentes da verificao formal. A demanda por verificao no Livro Laranja representa uma vitria dessa posio, embora controversa, porque tem havido crticas tanto ao modelo de segurana subjacente ao Livro Laranja, e quanto aos procedimentos para certificao segundo os critrios do Livro Laranja. O Livro Laranja no trata diretamente a questo da natureza da prova. Mais recentemente, no entanto, o documento Def Stan 00-55, representando a poltica oficial do Ministrio da Defesa britnico fez isso, tratando explicitamente da questo do status relativo de formas diferentes de argumento matemtico. Ele diferencia entre Prova Formal e Argumento Rigoroso: Uma prova formal uma seqncia estritamente bem formada de frmulas lgicas tais que cada uma implicada pelas frmulas anteriores na seqncia ou axiomas da teoria lgica ... Um Argumento Rigoroso est no nvel de um argumento matemtico na literatura cientfica que ser submetido reviso pelos pares ... Segundo o Ministrio, prova formal prefervel ao argumento rigoroso: A criao de provas [formais] ... consumir uma quantidade considervel de tempo do pessoal habilitado. O Padro portanto tambm admite um nvel mais baixo de garantia de projeto; este nvel conhecido como um Argumento Rigoroso. Um Argumento Rigoroso no uma Prova Formal e no um substituto para ela ... Permanece incerto em que medida as prticas da indstria de software sero influenciadas pelo Def Stan 00-55 e por padres similares de outros setores que podem se seguir um procedimento admitindo excees s demandas rgidas do 00-55 est incorporado no documento. Provas formais de programas reais ou projetos de hardware ainda so relativamente raras. Se elas se tornarem mais comuns, eu prediria que um novo nvel de disputa e litgio emergir. Isto dir respeito, no ao status geral das provas formais geradas em computador (embora essa questo certamente retornar), mas a uma questo que at o momento no produziu controvrsia: a estrutura interna de provas formais. Mesmo que todos concordem que provas devam consistir da manipulao de frmulas segundo as regras mecnicas da lgica, no se segue que todos concordaro com o que devem ser essas frmulas. As histrias da prova matemtica e da lgica formal revelam escopo para discordncias significativas. A disputa mais conhecida se refere lei do terceiro excludo (que afirma que uma proposio ou sua negao verdadeira) e assim a aceitabilidade de provar que um objeto matemtico existe mostrando que sua no existncia implicaria uma contradio. Formalistas, tais como Hilbert, no entendem essas provas como problemticas; construtivistas e intuicionistas, notadamente L. E. Brouwer, se recusam a empreglas, pelo menos para conjuntos infinitos. Outros exemplos so aqueles por vezes chamados de os princpios de Lewis, assim denominado por conta do lgico Clarence Irving Lewis. Estes princpios dizem que uma contradio implica qualquer proposio, e que uma tautologia implicada por qualquer proposio. Eles decorrem de axiomatizaes da lgica formal intuitivamente sugestivas, no entanto eles tm sido considerados dbios por alguns. razovel, por exemplo, inferir,

como permite o primeiro princpio de Lewis, que A lua feita de queijo verde decorre de Joo um homem e Joo no um homem? Nas palavras de um texto: Pessoas diferentes reagem de formas diferentes aos princpios de Lewis. Para alguns eles so convidados bem vindos, enquanto para outros eles so estranhos e suspeitos. Para alguns, no mais questionvel em lgica dizer que uma [contradio] implica todas as frmulas do que em aritmtica dizer que x0 sempre igual a 1 ... Para outros, contudo, os princpios de Lewis so inaceitveis porque a frmula antecedente pode no ter nada a ver com a frmula conseqente. Os crticos tm de encarar o problema que qualquer sistema lgico que desista dos princpios de Lewis parece ter que desistir de pelo menos um axioma lgico, mais bsico, intuitivamente bvio. Estas regras controversas da lgica so achadas nos sistemas dos quais a prova formal de programas e hardware depende. A lei do terceiro excludo amplamente usada em prova automtica de teoremas (por exemplo, no sistema HOL usado para a prova formal do VIPER). O primeiro princpio de Lewis que uma contradio implica qualquer proposio achado em quase todos sistemas de raciocnio automatizado (e.g., entre as regras de inferncia bsica do influente Vienna Development Metho). At hoje, essas regras no tm provocado dentro da cincia da computao o tipo de controvrsia que as tem envolvido em metamatemtica e lgica formal. Tem havido algum conflito intelectual entre os proponentes dos provadores de teoremas clssicos, que empregam a lei do terceiro excludo, e os construtivistas que no a emprega. Esse conflito no tomou, at hoje, a forma de uma disputa filosfica cerrada, e, at onde sabe o autor, nenhuma prova baseada em computador foi recusada por conta de seu uso do terceiro excludo ou dos princpios de Lewis. Consideraes pragmticas - colocar os sistemas para trabalhar, escolher a lgica apropriada ao contexto particular tm prevalecido sobre questes filosficas mais amplas. Podemos assumir, contudo, que uma situao de pragmatismo e coexistncia pacfica entre diferentes sistemas lgicos continuar? Meu sentimento de que no podemos; esta situao um produto da fase acadmica experimental do desenvolvimento da prova da exatido de sistemas computacionais. Na medida em que provas se tornem de maior significncia comercial e legal, interesses poderosos se desenvolvero em defesa ou como crtica de provas particulares. Algumas vezes, pelo menos, esses interesses conflitaro. Numa tal situao, a validade das regras da lgica formal ser inevitavelmente levada para dentro da disputa, e para dentro dos tribunais.

Concluso
H uma diferena importante entre a aritmtica computacional de ponto flutuante e a prova de sistemas computacionais. No primeiro caso havia uma aritmtica humana consensual e estvel perante a qual a aritmtica computacional poderia ser julgada. A aritmtica humana foi, contudo, insuficiente para determinar a melhor forma da aritmtica computacional. Foi, na verdade, uma questo de julgamento de qual era melhor, e julgamento contestado a esse respeito. A aritmtica humana provia um recurso, utilizado diferentemente pelos diferentes participantes, e no um conjunto de regras que poderia simplesmente ser aplicado na aritmtica computacional. H at evidncia tentativa de que interesses sociais, particularmente os interesse diferentes da Intel e da Digital influenciaram os julgamentos. Similarmente, o resultado fechamento em favor do esquema Kahan-Coonen-Stone pode ter sido influenciado por fatores contingentes

tais como a proximidade dos encontros do comit do Vale do Silcio, casa da Intel e outras firmas semicondutoras, a base Berkeley de Kahan. No caso da prova de sistemas computacionais, as prticas de prova existentes dentro da matemtica tm sido menos decisivas. A reputao da matemtica de preciso e certeza da matemtica tem sido um importante recurso retrico para aqueles que procuram mudar a abordagem da exatido de sistemas computacionais do emprico para o dedutivo. No entanto, os crticos tm argumentado que a prova da exatido de um programa computacional e a prova de um teorema matemtico so diferentes em espcie. Uma disputa sobre a prova matemtica de um sistema computacional j atingiu o estgio de litgio: a controvrsia a respeito do microprocessador VIPER. A predio desse captulo que o caso VIPER no ser o nico. Nem ser ele suficiente para alcanar o consenso sobre a forma geral a ser tomada pelas provas por exemplo, demandar que elas tomem a forma de seqncias de manipulaes de smbolos realizadas segundo as regras de transformao de um sistema lgico. Se a posio adotada neste captulo est correta, isto simplesmente empurrar a disputa para baixo, do status de tipos gerais de argumentos para a validade de etapas particulares nesses argumentos. Especificamente, esperam-se disputas sobre o sistema lgico que suporta as provas formais. A prova formal da exatido de sistemas computacionais , portanto, um caso de teste interessante para a sociologia do conhecimento, porque esta predio contrria a nossas intuies ordinrias sobre a certeza matemtica. Ela se utiliza no da matemtica informal ou semi-formal do tipo que at hoje tem provido a maior parte do material emprico para a sociologia do conhecimento, mas da deduo matemtica da espcie mais formal: precisamente o tipo de raciocnio que, podemos imaginar, tem que compelir concordncia. Na medida em que a prova de sistemas computacionais cresce em importncia e se move para dentro dos mundos comerciais e legais, ns teremos a oportunidade de ver se nossas intuies ordinrias sobre a matemtica, ou se as concluses da sociologia do conhecimento matemtico esto corretas. [1] H. M. Collins, Artificial Experts: Social Knowledge and Intelligent Machines (MIT Press, 1990), chapter 5. Nota da Edio em HTML: As demais referncias (2 a 60) no foram mantidas na traduo.

Você também pode gostar