Programação Lógica: Transformando B: -AC: -A em B, C: -A

8

Espero ter chegado ao lugar certo ... é (provavelmente) uma questão de Programação Lógica bastante direta.

Se eu tiver duas cláusulas do formulário: B:-A C:-A eu posso transformá-las em: B,C:-A

( Editar: onde B,Cestá uma conjunção. Estou fazendo uma avaliação de baixo para cima e é útil para mim representar várias cláusulas com o mesmo corpo usando uma cláusula com uma conjunção das respectivas cabeças. Isso parece trivial, mas estou me perguntando se existe um nome para essa transformação - no entanto, eu sei que a cláusula resultante não é mais uma cláusula de Horn. )

Alguém sabe se essa transformação tem um nome e, se houver, alguém pode fornecer um ponteiro (de preferência online) para algum lugar que a descreva.

Muito obrigado (de um n00b).

badroit
fonte

Respostas:

8

(AB)(AC)A(BC)(BA)(CA)(BC)AAB

O que você está tentando fazer está relacionado à transformação de binarização , discutida em "Na análise da complexidade das análises estáticas", de McAllester. Pode haver um nome melhor para a transformação, mas se assim for, não se sabia os autores do documento " Um solver sucinta para ALFP " ( A lternating L leste F ixed p fórmulas OINT são uma generalização das cláusulas de Horn para bottom programas lógicos como o seu) - no Exemplo 1 na página 4 eles discutem uma transformação semelhante e apenas a chamam de "explorar a possibilidade de compartilhar pré-condições".

Rob Simmons
fonte
1
Cara, eu tenho que parar de analisar superficialmente campos inteiros de pesquisa e obter minha educação na Wikipedia. Talvez então eu possa descobrir como é chamada a roda antes de reinventá-la. (Mas primeiro eu preciso terminar o meu PhD oO)
badroit
Desculpe pela minha resposta errada. Eu não deveria postar tarde da noite.
Dave Clarke
Eu entendo o sentimento (aplica-se a ambos os comentários!)
Rob Simmons
2

mb:AB,mc:ACmb,mc:AB×C

beroal
fonte