Existe alguma pesquisa de algoritmos para computar interpolantes? E os trabalhos em apenas um algoritmo? O caso em que estou mais interessado é em e C = q , além da restrição de que o interpolante seja o menor possível. (Conheço o artigo de McMillan de 2005 , que descreve como obter interpolantes, evitando quantificadores.)
Antecedentes: interpolação de Craig teorema (1957) afirma que se , onde A é um ( fol fórmula na) t A e C é uma fórmula de t C , em seguida, existe uma fórmula B tal que ⊢ t Um Um → B e ⊢ T C B → C . A Fórmula B é um interpolante Craig de A e C(ou, em definições alternativas, de e ¬ C ). Um interpolante trivial de ¬ p ∧ q e q é q , mas eu quero um interpolante pequeno , para alguma definição razoável de 'pequeno' (como tamanho sintático). (Os interpoladores têm muitos usos e, caso você esteja curioso, aqui está um .)
Motivação: Isso seria útil na verificação (muito) incremental do programa via geração de condição de verificação.
fonte
Respostas:
Dê uma olhada na tese de doutorado de Himanshu Jain , verificação usando verificação de satisfação, abstração de predicados e interpolação de Craig . Ele considera o desempenho de várias técnicas fundamentais, de olho nas aplicações em verificação, e possui um capítulo sobre interpolação de fórmulas envolvendo equações lineares e diofantinas.
Ele dá uma olhada particular no que eu conheço como método de conexão de Bibel e que ele chama de General Matings. Estas são abordagens baseadas em gráficos, em vez de baseadas em inferência de fórmula, para a satisfação. Se você está interessado neles em geral, deixe-me recomendar as provas razoavelmente curtas (11 páginas) de Dominic Hughes sem sintaxe .
fonte
Curiosamente, há uma conexão entre eliminação de cortes e o teorema da interpolação. Primeiro de tudo, o teorema da interpolação parece um reverso da eliminação da regra de mistura usada durante a eliminação do corte. Esta eliminação diz:
Agora, uma forma de teorema de interpolação baseada em provas sem cortes pode ser feita da seguinte maneira. É a versão invertida da eliminação. Começa com G, D | - B e fornece G | - A e D, A | - B:
Coloquei de propósito um ponto-e-vírgula entre as premissas G e D. É aqui que traçamos a linha, quais premissas queremos ver como entregando o interpolante e quais premissas queremos ver usando o interpolante.
Quando a entrada é uma prova de corte livre, o esforço do algroitmo é proporcional ao número de nós da prova de corte livre. Portanto, é prático um método linear na entrada. A cada etapa da prova livre de corte, o algoritmo monta o interpolante, introduzindo um novo conectivo.
A observação acima é válida para a construção de interpolação simples, onde exigimos apenas que o interpolante tenha proposições simultaneamente de G e D. Interpolantes com uma condição variável requerem um pouco mais de etapas, uma vez que também é necessário fazer alguma proteção variável.
Provavelmente, há uma conexão entre a minimalidade da prova livre de corte e o tamanho do interpolante. Nem todas as provas sem cortes são mínimas. Por exemplo, provas uniformes são geralmente mais curtas que provas sem cortes. O lema para provas uniformes é bastante simples, uma aplicação de regra da forma:
Pode ser evitado quando B não é usado na prova de C. Quando B não é usado na prova de C, já temos G | - C e, assim, enfraquecendo G, A -> B | - C. A interpolação algoritmo mencionado aqui, não prestará atenção nisso.
Cumprimentos
Referências: Teorema da interpolação de Craig formalizado e mecanizado em Isabelle / HOL, Tom Ridge, Universidade de Cambridge, 12 de julho de 2006 http://arxiv.org/abs/cs/0607058v1
A referência acima não mostra exatamente a mesma interpolação, pois usa vários conjuntos na parte final de um sequente. Também não faz uso de implicação. Mas é interessante, pois suporta minha reivindicação de complexidade e mostra uma verificação mecanizada.
fonte
Já se passaram mais de dois anos desde que essa pergunta foi feita, mas nesse período houve mais trabalhos publicados sobre algoritmos para calcular os interpolantes de Craig. Esta é uma área de pesquisa muito ativa e não é viável fornecer uma lista abrangente aqui. Eu escolhi artigos bastante arbitrariamente abaixo. Sugiro seguir os artigos que os referenciam e ler as seções de trabalho relacionadas para obter uma imagem clara da paisagem.
Geração Interpolante Eficiente em Teoria do Módulo de Satisfação , Alessandro Cimatti, Alberto Griggio, Roberto Sebastiani, ACM TOCL, 2010.
Abrange a interpolação para aritmética racional linear, lógica de diferença racional e número inteiro e lógica da Unidade Duas Variáveis por Desigualdade (UTVPI).
Geração interpolante eficiente em satisfação Aritmética de módulo inteiro linear , Alberto Griggio, Thi Thieu Hoa Le e Roberto Sebastiani. 2010.
Um método de combinação para geração de interpolantes , Greta Yorsh e Madanlal Musuvathi. 2005.
Mostra como gerar interpolantes na presença da combinação da teoria de Nelson-Oppen.
Interpolação de solo para a teoria da igualdade , Alexander Fuchs, Amit Goel, Jim Grundy, Sava Krstic, Cesare Tinelli. 2011.
Interpolação completa baseada em instanciação , Nishant Totla e Thomas Wies. 2012.
Interpolantes como Classificadores , Rahul Sharma, Aditya V. Nori e Alex Aiken, 2012.
fonte