uni:6:fsv:start
This is an old revision of the document!
−Table of Contents
Formale Spezifikation und Verifikation
Formal = Mittels Logik
Propositionallogik
Syntax
Propositionale Variablen | A,B,C,… |
---|---|
Junktoren | ¬,∧,∨,⇒,⇔ |
Formel | ϕ,ψ,… |
Konstanten | ⊤,⊥ |
Semantik
Belegung | η |
---|---|
Foo | ⟦ϕ⟧η |
Bar | &,∣∣ |
Tautologie | ∀η:⟦ϕ⟧η |
---|---|
Erfüllbar | ∃η:⟦ϕ⟧η |
Unerfüllbar | ∀η:¬⟦ϕ⟧η |
Äquivalent | ∀η:⟦ϕ⟧η=⟦ψ⟧η |
Erfüllbarkeitsäuivalenz | (ϕ und ψ sind erfüllbar)∨(ϕ und ψ sind unerfüllbar) |
Normierung
Literal | A und ¬A |
---|---|
Minterm | Konjunktion: …∧…∧…∧… (Die wenigsten Belegungen sind ⊤) |
Maxterm / Klausel | Disjunktion: …∨…∨…∨… (Die meisten Belegungen sind ⊤) |
KNF | (…∨…∨…∨…)∧(…∨…∨…∨…) |
DNF | (…∧…∧…∧…)∨(…∧…∧…∧…) |
- ⋀∅=⊤
- ⋁∅=⊥
ϕ … KNF | Größe | Zeit |
---|---|---|
Äquivalent | exponentiell | ? |
Erfüllungsäuivalent | linear | polynomiell |
Tseitin Übersetzung
- Rekursive Funktion KNF
- Rein
- (Nicht-Normalisierte) Formel
- Raus
- Neuster (frischer) Variablenname
- KNF
- C ist frische Variable
- Regel: C⇔ϕ als KNF
- Tabelle Erstellen
- Bei 0: Veroderung (Disjunktion) erstellen (A=0⇒A / A=1⇒¬A)
- Verodrungen verunden (Konjunktion)
KNF(A)=(A,⊤) |
KNF(¬ϕ)=let (B,Γ)=KNF(ϕ) in(C,Γ∧(C∨B)∧(¬C∨¬B)) |
KNF(ϕ1∨ϕ2)=let (B1,Γ1)=KNF(ϕ1) inlet (B2,Γ2)=KNF(ϕ2) in(C,Γ1∧Γ2∧(¬C∨B1∨B2)∧(C∨¬B1)∧(C∨¬B2)) |
SAT-Solver
SAT
- “ist ϕ erfüllbar?”
- Entscheidungsproblem (NP-Hart)
- Nur für KNF
- Erweiterung auf nicht KNF: Tseitin Übersetzung
- Erweiterung auf Äquivalenz von ϕ und ψ: ¬(ϕ⇔ψ) unerfüllbar?
DPLL-Algorithmus
- Rekursive Funktion DPLL
- Rein
- (Teil) Besetzung
- (Rest) KNF
- Raus
- Bessere Belegung
Hier gibt es mehr. Aber das halte ich für Klausurirrelevant
uni/6/fsv/start.1404856912.txt.gz · Last modified: 2020-11-18 18:10 (external edit)