Rechnergestütztes Beweisen (Hofmann, WS 2005/06) 2005-12-08 VL 16 Wdh: Ganzinger's Verfahren T |= _Gamma => E (_Gamma ist Gamma ohne Def.) ---------------- NO-Axiom Gamma => E T |= _Gamma => si = ti (für alle i) Gamma, u=v, f(ss)=u => E ---------------------------- NO-Compose Gamma, f(ss)=u, f(ts)=v => E Konsequenz aus der Vollständigkeit: 1) Jede herleitbare Konfiguration ist gültig 2) Jede Auswahlstrategie für Rückwärtsanwendung liefert Entscheidungsverfahren Fortsetzung des Vollständigkeitsbeweises: Noch zu zeigen: Auf jede gültige Konfiguration kann eine Regel rückwärts angewandt werden. Sei Gamma => E gültig. Fall 1: T |= _Gamma => E, dann ist Gamma => E Konklusion von NO-Axiom. Fall 2: T |=/= _Gamma => E Falls T Gleichungstheorie ist, fasse Variablen in Gamma als Konstanten auf und betrachte universelles Modell II von T UNION _Gamma. Es gilt, dass II |= a = b gdw. T |= _Gamma => a = b. Nach Annahme II |=/= E. Das Modell II lässt sich nicht zu einem Modell von Gamma erweitern, da II |= E im Widerspruch zu T |=/= _Gamma => E. Also gibt es Definitionen f(ss) = u, f(ts) = v in Gamma mit II |= ss = ts, aber II |=/= u=v. Das bedeutet wegen Universalität, dass T |= _Gamma => si=ti. D.h. NO-Compose anwendbar. Falls T konvex ist, aber nicht notwendigerweise eine Gleichungstheorie: Siehe eine zukünftige Version des Skriptes. Gleichungslösen =============== Gleichungslösen: Eine zentrale Method zur Entscheidung von Implikationen von Gleichungen. Def: Eine Theorie T ist lösbar, wenn ein Algorithmus Solve existiert, der zu einer gegebenen Gleichung s=t entweder BOT (_|_) zurückgibt, oder eine endliche Menge von Gleichungen x_1=u_1,...,x_n=u_n, wobei x_1,...,x_n die Variablen in s und t sind. Bedingungen: * Die x_i dürfen nicht in den u_j vorkommen, die u_j dürfen aber neue Variablen enthalten. * Solve(s=t)=BOT gdw. T |= s=t => x=y für frische x=y * Solve(s=t) = {x1=u1(ps) ... xn=un(ps)} impliziert, dass in jedem Modell II von T gilt s=t <=> EXISTS ps. x1=u1(ps) AND ... AND xn=un(ps) Beispiel: s=x+y-z t=y-x+5 Solve(s=t) = { x=q, y=p, z=2q-5 } Beispiel: T Gleichungstheorie von {true, false, if-then-else} Falls true=false, dann x = if x then true else false = if x then true else true = true = = if y then true else true = if y then true else false = y oder x = if true then x else y = if false then x else y = y Lemma. Solve(s=t) = { xi=ui(ps) | i=1..n } T |= (FORALL xs. s=t => phi(xs)) IFF (FORALL ps. phi(u1(ps)..un(ps))) Beweis: Direkt aus Spezifikation von Solve. Anwendung: Sei T lösbar und kanonisierbar. Dann ist die Frage T |= Gamma => E entscheidbar. Löse Gleichungen in Gamma sukzessive auf und setze ein. Falls BOT erscheint, so gilt Gamma => E trivial. Andernfalls verbleibt eine unbedingte Gleichung, die mit der Kanonisierung entschieden wird. Beispiele für lösbare Theorien: 1. Lineare Arithmetik über Q. Sprache: 1:T, +:[T,T->T] und q*:[T->T] für jedes q aus Q. Die L.A., entweder als Gleichungstheorie, oder als erststufige Theorie, ist lösbar (Schule). Normalform von Termen: q1*x1 + ... + qn*xn + q(n+1)*1 Normalform von Gleichungen t = 0*1 Lösung von q1*x1 + ... + qn*xn + q(n+1)*1 = 0 ist { x1 = (q1^-1)*(q2*y2 + ... + qn*yn + q(n+1)*1), xi=yi für i>1 } Lösung von 1=0 ist BOT. 2. Paare und Projektionen. Solve(x.1=y.2) = {x=
, y=