LowerUnits - LowerUnits

v důkaz komprese LowerUnits (LU) je algoritmus používaný ke kompresi výroková logika rozlišení důkazů. Hlavní myšlenkou LowerUnits je využít následující skutečnost:[1]

Teorém: Nechat  být potenciálně nadbytečný důkaz, a  být nadbytečným důkazem redundantní uzel. Li Je doložka je jednotková klauze, pak  je nadbytečné.

Algoritmus cílí přesně na třídu globální redundance vyplývající z více rozlišení s jednotkovými klauzulemi. Algoritmus odvozuje svůj název od skutečnosti, že když je toto přepsání hotové a výsledný důkaz je zobrazen jako DAG (směrovaný acyklický graf ), uzel jednotky jeví se níže (tj. blíže ke kořenu), než se objevovala v původním důkazu.

Naivní implementace využívající teorém by vyžadovala, aby byl důkaz spuštěn a opraven po spuštění každého uzlu jednotky. Je však možné to udělat lépe tak, že nejprve shromáždíte a odstraníte všechny uzly jednotek v jednom průchodu a poté zafixujete celý důkaz v jednom druhém průchodu. Nakonec musí být nashromážděné a pevné uzly jednotek znovu vloženy do spodní části důkazu.

Je třeba dávat pozor na případy, kdy je uzel jednotky nastane výše v dílčí izolaci, která odvozuje další uzel jednotky . V takových případech, záleží na . Nechat být doslovný jednotkové klauzule . Pak jakýkoli výskyt v subproof výše nebude zrušeno na základě závěrů o rozlišení s už. Tudíž, se bude šířit směrem dolů, až bude důkaz opraven, a objeví se v klauzuli . Potížím s takovými závislostmi se lze snadno vyhnout, pokud znovu vložíme uzel horní jednotky po opětovném vložení uzlu jednotky (tj. po opětovném vložení, musí se objevit níže , zrušit další literál z Doložka). To lze zajistit shromážděním uzlů jednotek ve frontě během procházení důkazu zdola nahoru a opětovným vložením v pořadí, ve kterém byly zařazeny do fronty.

Algoritmus pro upevnění důkazu obsahujícího mnoho kořenů provede procházení důkazu shora dolů, přepočítá resolventy a nahradí poškozené uzly (např. Uzly, které mají odstraněného NodeMarker jako jednoho ze svých rodičů) jejich přeživšími rodiči (např. Druhým rodičem, v případě, že jeden rodič byl odstraněnNodeMarker).

Když jsou jednotkové uzly shromážděny a odstraněny z důkazu klauzule a důkaz je pevný, doložka v kořenovém uzlu nového důkazu se nerovná already, but contains (some of) the duals of the literals of the unit clauses that have been removed from the proof. Opětovné vložení uzlů jednotek ve spodní části korektury je vyřešeno s klauzulemi (některých) shromážděných uzlů jednotek za účelem získání důkazu o znovu.

Algoritmus

Obecná struktura algoritmu

Algoritmus Vstup LowerUnits: Důkaz   Výstup: Důkaz  bez globální redundance s jednotkovým redundantním uzlem
  (unitsQueue, ) ← collectUnits ();    ← opravit (); fixedUnitsQueue ← fix (unitsQueue);  ← znovu vložte jednotky (, fixedUnitsQueue); vrátit se ;
  • „←“ označuje úkol. Například, "největšípoložka"znamená, že hodnota největší změny hodnoty položka.
  • "vrátit se"ukončí algoritmus a odešle následující hodnotu.

Jednotkové doložky shromažďujeme následovně

Algoritmus CollectUnits Input: Důkaz   Výstup: Pár obsahující frontu všech uzlů jednotek (unitsQueue), které jsou použity více než jednou  a nefunkční důkaz 
; přejít  zdola nahoru a pro každého uzel  v  dělat  -li  je jednotka a  má více než jedno dítě pak      přidat  to unitsQueue; odstranit  z ;   koneckonecvrátit se (unitsQueue, ); 
  • „←“ označuje úkol. Například, "největšípoložka"znamená, že hodnota největší změny hodnoty položka.
  • "vrátit se"ukončí algoritmus a odešle následující hodnotu.

Pak znovu vložíme jednotky

Algoritmus Vstup ReinsertUnits: Důkaz  (s jediným kořenem) a fronta  kořenových uzlů Výstup: Důkaz 
; zatímco  dělat     ← první prvek ;     ← ocas ;    -li  je vyřešitelný s kořenem  pak         ← resolvent z  s kořenem ;     konec konecvrátit se ;
  • „←“ označuje úkol. Například, "největšípoložka"znamená, že hodnota největší změny hodnoty položka.
  • "vrátit se"ukončí algoritmus a odešle následující hodnotu.

Poznámky

  1. ^ Fontaine, Pascal; Merz, Stephan; Woltzenlogel Paleo, Bruno. Komprese důkazů o návrhovém řešení prostřednictvím částečné regularizace. 23. mezinárodní konference o automatizovaném odpočtu, 2011.