Anti-unification (datavetenskap)

Anti-unification är processen att konstruera en generalisering som är gemensam för två givna symboliska uttryck. Liksom i unification urskiljs flera ramverk beroende på vilka uttryck (även kallade termer) som är tillåtna, och vilka uttryck som anses lika. Om variabler som representerar funktioner är tillåtna i ett uttryck kallas processen "högre ordningens anti-förening", annars "första ordningens anti-förening". Om generaliseringen krävs för att ha en instans som bokstavligen är lika med varje inmatningsuttryck, kallas processen "syntaktisk anti-förening", annars "E-anti-förening", eller "anti-förening modulo teori".

En anti-unifieringsalgoritm bör för givna uttryck beräkna en komplett och minimal generaliseringsuppsättning, det vill säga en uppsättning som täcker alla generaliseringar, och som inte innehåller några redundanta medlemmar. Beroende på ramverket kan en komplett och minimal generaliseringsuppsättning ha en, ändligt många, eller möjligen oändligt många medlemmar, eller kanske inte existera alls; den kan inte vara tom, eftersom en trivial generalisering finns i alla fall. För första ordningens syntaktiska anti-unifiering Gordon Plotkin en algoritm som beräknar en komplett och minimal singleton generaliseringsuppsättning innehållande den så kallade "minst allmänna generaliseringen" (lgg).

Anti-förening bör inte förväxlas med dis-unification . Det sistnämnda innebär processen att lösa inekvationssystem, det vill säga att hitta värden för variablerna så att alla givna inekvationer är uppfyllda. Denna uppgift är helt annorlunda än att hitta generaliseringar.

Förutsättningar

Formellt förutsätter ett anti-enhetsförhållningssätt

  • En oändlig mängd V av variabler . För högre ordnings anti-unifiering är det bekvämt att välja V disjoint från uppsättningen av lambda-term bundna variabler .
  • En uppsättning T av termer så att V T . För första ordningens och högre ordningens anti-unifiering T vanligtvis uppsättningen av första ordningens termer (termer byggda från variabel- och funktionssymboler) respektive lambda -termer (termer som innehåller några högre ordningens variabler).
  • En ekvivalensrelation , som indikerar vilka termer som anses lika. För högre ordnings anti-unifiering, vanligtvis om och är alfaekvivalenta . För första ordningens E-anti-unification, reflekterar bakgrundskunskapen om vissa funktionssymboler; till exempel, om anses kommutativ, om resulterar från genom att byta argumenten för vid några (möjligen alla) förekomster. Om det inte finns någon bakgrundskunskap alls, så anses endast bokstavligen, eller syntaktiskt, identiska termer vara lika.

Första ordningens termin

Givet en uppsättning av variabelsymboler, en uppsättning av konstantsymboler och uppsättningar av -ary funktionssymboler, även kallade operatorsymboler, för varje naturligt tal är uppsättningen (osorterade första ordningens) termer rekursivt definierade som den minsta mängden med följande egenskaper:

  • varje variabelsymbol är en term: V T ,
  • varje konstant symbol är en term: C T ,
  • från varje n termer t 1 ,..., t n , och varje n -är funktionssymbol f F n , en större term kan byggas.

Till exempel, om x V är en variabel symbol, 1 ∈ C är en konstant symbol och add ∈ F 2 är en binär funktionssymbol, då x T , 1 ∈ T , och (därav) add( x ,1) ∈ T av byggregeln för första, andra och tredje termen. Den senare termen skrivs vanligtvis som x +1, med hjälp av Infix-notation och den vanligare operatorsymbolen + för enkelhetens skull.

Term av högre ordning

Utbyte

En substitution är en avbildning från variabler till termer; beteckningen avser till en substitution som mappar varje variabel till termen , för , och varje annan variabel för sig själv. Att tillämpa denna substitution på en term t skrivs i postfix-notation som ; det betyder att (samtidigt) ersätta varje förekomst av varje variabel i termen t med . Resultatet av att tillämpa en substitution σ på en term t kallas en instans av den termen t . Som ett första ordningens exempel, att tillämpa substitutionen på termen

f ( x , a , g ( z ), y ) avkastning
f ( h ( a , y ) , a , g ( b ), y ) .

Generalisering, specialisering

Om en term har en instans som motsvarar en term det vill säga om för någon ersättning , då kallas mer generell än , och kallas mer speciell än, eller subsumeras av, . Till exempel mer allmän än om är kommutativ , eftersom då .

Om är bokstavlig (syntaktisk) identitet för termer, kan en term vara både mer allmän och mer speciell än en annan endast om båda termerna skiljer sig bara i deras variabelnamn, inte i deras syntaktiska struktur; sådana termer kallas varianter eller byter namn på varandra. Till exempel en variant av , eftersom och . Men är dock inte en variant av eftersom ingen substitution kan transformera den senare termen till den förra, även om uppnår den omvända riktningen. Den senare termen är därför mer speciell än den förra.

En substitution är mer speciell än, eller subsumerad av, en substitution om är mer speciell än för varje variabel . Till exempel mer speciell än , eftersom och är mer speciell än respektive .

Antiföreningsproblem, generaliseringsuppsättning

Ett problem mot förening är ett par termer. En term är en vanlig generalisering , eller anti-unifier , av och om och för vissa substitutioner . För ett givet anti-unifieringsproblem kallas en uppsättning komplett om varje generalisering subsumerar någon term ; uppsättningen kallas minimal om ingen av dess medlemmar subsumerar en annan.

Första ordningens syntaktiska anti-förening

Ramverket för första ordningens syntaktiska antiförening är baserat på att är uppsättningen av första ordningens termer (över en viss uppsättning av variabler, av konstanter och av -ary funktionssymboler) och på är syntaktisk likhet . I detta ramverk har varje anti-unifieringsproblem en komplett och uppenbarligen minimal singellösningsuppsättning . Dess medlem kallas den minsta allmänna generaliseringen (lgg) av problemet, den har en instans syntaktiskt lika med och en annan syntaktisk lika med . All vanlig generalisering av och subsumerar . Lgg är unik upp till varianter: om och är både kompletta och minimala lösningsuppsättningar av samma syntaktiska anti-unifieringsproblem, då är och för vissa termer och som byter namn på varandra.

Plotkin har gett en algoritm för att beräkna lgg för två givna termer. Det förutsätter en injektiv mappning det vill säga en mappning som tilldelar varje par av termer en egen variabel , så att inga två par delar samma variabel. Algoritmen består av två regler:

om tidigare regel inte är tillämplig

Till exempel, ; denna minst allmänna generalisering återspeglar den gemensamma egenskapen för båda inmatningarna att vara kvadrattal.

Plotkin använde sin algoritm för att beräkna den " relativa minsta allmänna generaliseringen (rlgg) " av två klausuluppsättningar i första ordningens logik, vilket var grunden för Golem - metoden för induktiv logikprogrammering .

Första ordningens anti-unification modulo teori

  • Jacobsen, Erik (juni 1991), Unification and Anti-unification (PDF) , Teknisk rapport
  • Østvold, Bjarte M. (apr 2004), A Functional Reconstruction of Anti-Unification (PDF) , NR Note, vol. DART/04/04, Norwegian Computing Center
  • Boytcheva, Svetla; Markov, Zdravko (2002). "En algoritm för att inducera minsta generalisering under relativ implikation" ( PDF) . {{ citera journal }} : Citera journal kräver |journal= ( hjälp )
  • Kutsia, Temur; Levy, Jordi; Villaret, Mateu (2014). "Anti-unifiering för orankade villkor och säkringar" (PDF) . Journal of Automated Reasoning . 52 (2): 155–190. doi : 10.1007/s10817-013-9285-6 . Programvara.

Ekvationsteorier

Första ordningens sorterad antiförening

Nominell anti-förening

Ansökningar

Zohar Manna ; Richard Waldinger (dec 1978). En deduktiv metod för programsyntes (PDF) (teknisk anmärkning). SRI International . — förtryck av 1980 års artikel
  Zohar Manna och Richard Waldinger (januari 1980). "Ett deduktivt tillvägagångssätt för programsyntes". ACM-transaktioner på programmeringsspråk och system . 2 : 90–121. doi : 10.1145/357084.357090 . S2CID 14770735 .

Högre ordning mot enande

Anteckningar