Programacao Logica Romulo Gama, Diego Augusto, Eduardo Assis Programacao logica e um paradigma de programacao que faz uso da logica matematica. John McCarthy [1958] foi o primeiro a publicar uma proposta de uso da logica matematica para programacao. A primeira linguagem de programacao logica foi a Planner, a qual permitia a invocacao orientada a padroes de planos procedimentais de assercoes e de objetivos. Com a necessidade de adaptacao aos sistemas de memoria muito limitada, que eram disponiveis quando ela foi desenvolvida. A linguagem Planner usava estruturas de controle de backtracking, de tal forma que apenas um unico caminho computacional tinha que ser armazenado por vez. Em seguida, o Prolog foi desenvolvido como uma simplificacao do Planner que permitia a invocacao orientada a padroes apenas a partir de objetivos (tambem baseado em backtracking). A partir do Planner, foram desenvolvidas as linguagens de programacao QA-4, Popler, Conniver, e QLISP. As linguagens de programacao Mercury, Visual Prolog, Oz e Frill, foram desenvolvidas a partir do Prolog. Atualmente existem linguagens de programacao logica concorrentes (nao baseadas em backtracking) derivadas do Planner (por exemplo, a Ether) e derivadas do Prolog (Shapiro). Historia A programacao logica e uma ideia que tem sido investigada no contexto da inteligencia artificial pelo menos desde o momento em que John McCarthy propos: "programas para manipular com sentencas instrumentais comuns apropriadas a linguagem formal (muito provavelmente uma parte do calculo de predicado)". O programa basico formara conclusoes imediatas a partir de uma lista de premissas. Essas conclusoes serao tanto sentencas declarativas quanto imperativas. Quando uma sentenca imperativa e deduzida, o programa toma uma acao correspondente. Base na Logica Matematica O sentido da programacao logica e trazer o estilo da logica matematica a programacao de computadores. Matematicos e filosofos encontram na logica uma ferramenta eficaz para desenvolvimento de teorias. Varios problemas sao naturalmente expressos como teorias. Dizer que um problema precisa de solucao frequentemente equivale a perguntar se uma nova hipotese e consistente com uma teoria existente ou se e consequencia dela. A logica proporciona uma maneira de demonstrar se uma questao e verdadeira ou falsa. O processo de construir uma demonstracao e bem conhecido, portanto a logica e um meio confiavel de responder perguntas. Sistemas de programacao logica automatizam este processo. A inteligencia artificial teve uma influencia importante no desenvolvimento da programacao logica. As proposicoes sao indicadas pelas letras latinas minusculas: p, q, r, s, t. Exemplo:Prolog Escolhemos a linguagem de programacao Prolog, para exemplificar. A linguagem de programacao Prolog foi explicitamente apresentada como baseada na logica matematica. A base dessa alegacao era que um programa Prolog podia literalmente ser lido como um conjunto de formulas em um fragmento da logica de primeira ordem, herdando o modelo de teoria e demonstracao da logica de primeira ordem. Prolog foi desenvolvida em 1972 por Alain Colmerauer. Ela veio de uma colaboracao entre Colmerauer em Marselha e Robert Kowalski em Edinburgo. Colmerauer estava trabalhando na compreensao da linguagem natural, usando logica para representar semanticas e usando resolucao para questionamento-resposta. Durante o verao de 1971, Colmerauer e Kowalski descobriram que a forma clausal da logica poderia ser