RecycleUnits - RecycleUnits

v matematická logika, důkaz komprese pomocí RecycleUnits[1] je metoda pro kompresi výroková logika rozlišení důkazů Jeho hlavní myšlenkou je využít průběžné (např. Nezadané) výsledky důkazu jako jednotky doložky, tj. klauzule obsahující pouze jeden literál. Určité uzly důkazu lze nahradit uzly představujícími tyto klauzule jednotek. Po této operaci se získaný graf transformuje na platný důkaz. Výstupní důkaz je kratší než originál, přičemž je ekvivalentní nebo silnější.

Algoritmy

Algoritmy považují důkazy rozlišení za směrované acyklické grafy, kde je každý uzel označen klauzulí a každý uzel má jednoho nebo dva předchůdce zvané rodiče. Pokud má uzel dva rodiče, je také označen výrokovou proměnnou zvanou pivot, která byla použita k výpočtu klauzule uzlů pomocí rozlišení.
Následující algoritmus popisuje nahrazení uzlů.
Předpokládá se, že v důkazu rozlišení pro všechny nelistové uzly se dvěma nadřazenými uzly obsahuje levý nadřazený uzel kladnou a pravý nadřazený uzel zápornou proměnnou pivot. Algoritmus nejprve iteruje přes všechny klauzule nelistových jednotek a poté přes všechny předkové uzly důkazu. Pokud je otočným prvkem uzlu proměnná doslovného klauzule současné jednotky, jeden z nadřazených uzlů lze nahradit uzlem odpovídajícím klauzuli jednotky. Z výše uvedeného předpokladu, pokud se literál rovná pivot, levý rodič obsahuje literál a může být nahrazen uzlem klauzule jednotky. Pokud se literál rovná negaci pivot, nahradí se pravý rodič.

1  funkce RecycleUnits (Důkaz ): 2 Let  být množinou nelistových uzlů představujících jednotkové klauze3 pro každý  dělat4 Označte předky u5 pro každý neoznačený  dělat6 let  být kontingenční proměnnou 7 let  být doslovný obsažený v klauzuli 8              -li  pak9 nahraďte levého rodiče  s 10             jinak pokud  pak11 nahradit pravého rodiče  s 

Obecně po provedení této funkce už důkaz nebude právním důkazem. Následující algoritmus vezme kořenový uzel důkazu a vytvoří z něj právní důkaz. Výpočet začíná rekurzivními voláními na podřízené uzly. Za účelem minimalizace volání algoritmu se sleduje, které uzly již byly navštíveny. Všimněte si, že důkaz rozlišení lze považovat za obecně zaměřený acyklický graf na rozdíl od stromu. Po rekurzivním volání se aktualizuje klauzule tohoto uzlu. Přitom mohou nastat čtyři různé případy. Současná proměnná proměnné se může vyskytnout v obou, vlevo, vpravo nebo v žádném z nadřazených uzlů. Pokud k tomu dojde v obou nadřazených uzlech, klauzule se vypočítá jako resolvent nadřazených klauzulí. Pokud není k dispozici v jednom z nadřazených uzlů, lze klauzuli tohoto nadřazeného uzlu zkopírovat. Pokud to chybí u obou rodičů, je třeba si vybrat heuristicky.

1  funkce ReconstructProof (uzel ):3      -li  je navštíveno vrátit se4 značka  jak bylo navštíveno5 -li  nemá rodiče vrátit se6      jinak pokud  má pouze jednoho rodiče  pak7 ReconstructProof ()8          . Klauzule = . Klauzule9 jiný10 let  být vlevo a  pravý nadřazený uzel 11 let  být kontingenční proměnnou používanou k výpočtu 12 ReconstructProof () 13 ReconstructProof ()14         -li  a 15             .Clause = Vyřešit (,,)16         jinak pokud  a 17             . Klauzule = .Clause18 smazat odkaz na 19         jinak pokud  a 20             . Klauzule = .Clause21 smazat odkaz na 22         jiný23 let  a  // vyberte x heuristicky24 . Klauzule = .Clause25 smazat odkaz na 

Příklad

Zvažte následující důkaz rozlišení.
Jedním z mezivýsledků je což představuje jednotkovou klauzuli (-1).

Existuje jeden uzel, který není předkem a používá proměnnou 1 jako otočný prvek: .

Doslovný -1 je obsažen v pravém rodiči tohoto uzlu, a proto je tento rodič nahrazen znakem . Řetězec označuje odkaz na klauzuli (struktura je nyní spíše namířeným acyklickým grafem než stromem).

Tato struktura již není právním důkazem, protože není rezolventem společnosti a . Proto se musí znovu transformovat do jednoho.
Prvním krokem je aktualizace . Protože se kontingenční proměnná 1 objevuje v obou nadřazených uzlech, se počítá jako jejich rozpouštědlo.

Levý nadřazený uzel neobsahuje proměnnou pivot a proto je klauzule tohoto rodiče zkopírována do klauzule . Souvislost mezi a je odstraněn a protože na něj neexistují žádné další odkazy tento uzel lze smazat.

Opět levý rodič neobsahuje proměnnou pivot a provádí se stejná operace jako dříve.

Poznámka: reference byl nahrazen skutečným kontrolním uzlem .
Výsledkem tohoto důkazu je jednotková klauzule (3), která je silnějším výsledkem než klauzule (3,5) původního důkazu.

Poznámky

  1. ^ Bar-Ilan, O .; Fuhrmann, O .; Hoory, S.; Shacham, O.; Strichman, O. Lineární redukce důkazů o rozlišení. Hardware a software: Verifikace a testování, s. 114–128, Springer, 2011.