ApCoCoA-1:Examples Tutorial De Logic: Difference between revisions

From ApCoCoAWiki
StK (talk | contribs)
No edit summary
StK (talk | contribs)
No edit summary
Line 22: Line 22:




In einer Firma werden zur Zeit die drei Projekte $A$, $B$ und $C$ bearbeitet.  
In einer Firma werden zur Zeit die drei Projekte <math>A</math>, <math>B</math> und <math>C</math> bearbeitet.  
Um herauszufinden, welche Projekte bis zum Ende der Woche abgeschlossen werden, befragt der Chef der Firma  
Um herauszufinden, welche Projekte bis zum Ende der Woche abgeschlossen werden, befragt der Chef der Firma  
die jeweiligen Projektleiter und erh\"alt folgende Angaben:
die jeweiligen Projektleiter und erhält folgende Angaben:
\begin{enumerate}\renewcommand{\labelenumi}{\arabic{enumi})}\addtolength{\itemsep}{-0.5em}
 
\item Es k\"onnen nicht alle Projekte fertiggestellt werden.
1) Es können nicht alle Projekte fertiggestellt werden.
\item Um Projekt $B$ fertigstellen zu k\"onnen, muss Projekt $A$ fertiggestellt sein.
 
\item Es wird auf jeden Fall Projekt $B$ oder Projekt $C$ fertiggestellt.
2) Um Projekt <math>B</math> fertigstellen zu können, muss Projekt <math>A</math> fertiggestellt sein.
\item Projekt $C$ kann nur fertiggestellt werden, wenn Projekt $B$ fertiggestellt ist.
 
\end{enumerate}
3) Es wird auf jeden Fall Projekt <math>B</math> oder Projekt <math>C</math> fertiggestellt.
 
4) Projekt <math>C</math> kann nur fertiggestellt werden, wenn Projekt <math>B</math> fertiggestellt ist.
 
Bestimmen Sie diejenigen Projekte, die bis zum Ende der Woche fertiggestellt werden.
Bestimmen Sie diejenigen Projekte, die bis zum Ende der Woche fertiggestellt werden.


Line 37: Line 40:
== Lösung mit CoCoA ==
== Lösung mit CoCoA ==


\begin{itemize}
 
\item Festlegung der Abk\"urzungen:
'''Festlegung der Abkürzungen:'''
\begin{center}
 
$\begin{array}{rcccl}
<center>
A & = & \text{{\glqq}Projekt $A$ wird bis Ende der Woche fertig{\grqq}} & = & a+1, \\
<math>A</math> = "Projekt <math>A</math> wird bis Ende der Woche fertig" = <math>a+1</math>,
B & = & \text{{\glqq}Projekt $B$ wird bis Ende der Woche fertig{\grqq}} & = & b+1, \\
 
C & = & \text{{\glqq}Projekt $C$ wird bis Ende der Woche fertig{\grqq}} & = & c+1.
<math>B</math> = "Projekt <math>B</math> wird bis Ende der Woche fertig" = <math>b+1</math>,  
\end{array}$
 
\end{center}
<math>C</math> = "Projekt <math>C</math> wird bis Ende der Woche fertig" = <math>c+1</math>.
\item \"Ubersetzung der Aussagen:
</center>
\begin{itemize}
 
\item {\glqq}Es k\"onnen nicht alle Projekte fertiggestellt werden{\grqq}:  
 
\begin{equation*}
'''Übersetzung der Aussagen:'''
F_1 \ :=\ \neg\left(A\wedge B\wedge C\right).
 
\end{equation*}
"''Es können nicht alle Projekte fertiggestellt werden''":  
Zuerst übersetzten wir $\left(A\wedge B\right)$ mittels der ersten Tabelle zu $ab+1=:f$ und $C$ zu  
<center><math>F_1 := \neg\left(A\wedge B\wedge C\right)</math>.</center>
$c+1=:g$, damit wird dann (siehe zweite Tabelle) $\left(\left(A\wedge B\right)\wedge C\right)$ zu  
Zuerst übersetzten wir <math>\left(A\wedge B\right)</math> mittels der ersten Tabelle zu <math>ab+1=:f</math> und <math>C</math> zu  
$\left(ab+1\right)\left(c+1\right)+\left(ab+1\right)+\left(c+1\right)= abc +  1$. Jetzt fehlt nur noch das  
<math>c+1=:g</math>, damit wird dann (siehe zweite Tabelle) <math>\left(\left(A\wedge B\right)\wedge C\right)</math> zu  
$\neg$ in der Übersetzung, also lautet das zugehölrige Polynom  
<math>\left(ab+1\right)\left(c+1\right)+\left(ab+1\right)+\left(c+1\right)= abc +  1</math>. Jetzt fehlt nur noch das  
\begin{equation*}
<math>\neg</math> in der Übersetzung, also lautet das zugehölrige Polynom  
f_1=abc.
<center><math>f_1=abc</math>.</center>
\end{equation*}
 
\item {\glqq}Um Projekt $B$ fertigstellen zu k\"onnen, muss Projekt $A$ fertiggestellt sein{\grqq}:  
"''Um Projekt <math>B</math> fertigstellen zu können, muss Projekt <math>A</math> fertiggestellt sein''":  
\begin{equation*}
<center><math>F_2 := \left(B\Rightarrow A\right)</math>,</center>
F_2\ :=\ \left(B\Rightarrow A\right),
mit dem zugehörigen Polynom
\end{equation*}
<center><math>f_2=ba+b</math>.</center>
mit dem zugehörigen Polynom
 
\begin{equation*}
"''Es wird auf jeden Fall Projekt <math>B</math> oder Projekt <math>C</math> fertiggestellt''":  
f_2=ba+b.
<center><math>F_3 := \left(B\vee C\right)</math>,</center>
\end{equation*}
das zugehörige Polynom lautet
\item {\glqq}Es wird auf jeden Fall Projekt $B$ oder Projekt $C$ fertiggestellt{\grqq}:  
<center><math>f_3=bc+b+c+1</math>.</center>
\begin{equation*}
 
F_3\ :=\ \left(B\vee C\right),
"''Projekt <math>C</math> kann nur fertiggestellt werden, wenn Projekt <math>B</math> fertiggestellt ist''":  
\end{equation*}
<center><math>F_4 := \left(C\Rightarrow B\right)</math>,</center>
das zugehörige Polynom lautet
und
\begin{equation*}
<center><math>f_4=cb+c</math>.</center>
f_3=bc+b+c+1.
 
\end{equation*}
 
\item {\glqq}Projekt $C$ kann nur fertiggestellt werden, wenn Projekt $B$ fertiggestellt ist{\grqq}:  
'''CoCoA'''
\begin{equation*}
 
F_4\ :=\ \left(C\Rightarrow B\right),
Zuerst müssen wir in {\CoCoA} den passenden Ring eingeben  
\end{equation*}
<center><tt>Use S::=Z/(2)[a,b,c];</tt></center>
und
Dann brauchen wir noch das Körperideal, welches die Nullstellen auf $0$ und $1$ festlegt
\begin{equation*}
<center><tt>K:=Ideal(a^2+a, b^2+b, c^2+c);</tt></center>
f_4=cb+c.
Als nächstes geben wir die übersetzten Polynome ein
\end{equation*}
<center><tt>I:=Ideal(abc, ba+b, bc+b+c+1, cb+c) + K;</tt></center>
\end{itemize}
und erhalten mittels  
\item {\CoCoA}\smallskip\\
<center><tt>ReducedGBasis(I);</tt></center>
Zuerst müssen wir in {\CoCoA} den passenden Ring eingeben  
die Antwort
\begin{center}
<center><tt>[b+1, a+1, c].</tt></center>
\ttfamily Use S::=Z/(2)[a,b,c];
 
\end{center}
 
Dann brauchen wir noch das Körperideal, welches die Nullstellen auf $0$ und $1$ festlegt
'''Antwort:'''
\begin{center}
 
\ttfamily K:=Ideal(a\textasciicircum 2+a, b\textasciicircum 2+b, c\textasciicircum 2+c);
Also müssen der Wahrheitswert von <math>A</math>, die Nullstelle von <math>a+1</math>, und der Wahrheitswert  
\end{center}
von <math>B</math>, die Nullstelle von <math>b+1</math>, <math>1</math> sein und der Wahrheitswert von <math>C</math>, die Nullstelle  
Als nächstes geben wir die übersetzten Polynome ein
von <math>c</math>, <math>0</math>. Also werden die Projekte <math>A</math> und <math>B</math> bis Ende der Woche fertig.
\begin{center}
\ttfamily I:=Ideal(abc, ba+b, bc+b+c+1, cb+c) + K;
\end{center}
und erhalten mittels  
\begin{center}
\ttfamily ReducedGBasis(I);
\end{center}
die Antwort
\begin{center}
{\ttfamily [b+1, a+1, c]}.
\end{center}
\item Also müssen der Wahrheitswert von $A$, die Nullstelle von $a+1$, und der Wahrheitswert  
von $B$, die Nullstelle von $b+1$, $1$ sein und der Wahrheitswert von $C$, die Nullstelle  
von $c$, $0$. Also werden die Projekte $A$ und $B$ bis Ende der Woche fertig.
\end{itemize}
   
   
   
   

Revision as of 10:10, 18 July 2008

Etwas Aussagen-Logik

In der Logik ist man auf der Suche nach Wahrheitswerten von Formeln. Logische Formel können entweder "wahr" (Wahrheitswert 1) oder "falsch" (Wahrheitswert 0) sein. Die Suche nach den Wahrheitswerten einer Formel verwandeln wir, wie schon bei der Suche nach den Lösungen eines linearen Gleichungssystems (siehe Kapitel Lineare Gleichungssysteme), in die Suche nach Nullstellen. Dies bedeute für uns, dass wir die logischen Formeln in Polynome über dem Körper 𝔽2, welcher nur aus den Elementen 0 und 1 besteht, übersetzen müssen.

Zuallererst müssen wir festlegen, wie wir Texte in aussagenlogische Formeln übersetzen. Dafür brauchen wir zunächst mal Abkürzungen (hier A und B), welche für eine Aussage stehen, die entweder wahr oder falsch sein kann.

Diese Übersetzungen haben dann, abhängig von den Wahrheitswerten von A und B, die folgenden Wahrheitswerte.

Diese logischen Formeln übersetzen wir jetzt in Polynome über 𝔽2, so dass die Belegung "Wahrheitswert 1" in die "Nullstelle 1" übersetzt wird.

So gilt z.B. ab+a=0 für die folgenden Kombinationen von a und b: a,b=0, a=0,b=1 und a,b=1. Dies sind genau die gleichen Werte, bei denen AB den Wahrheitswert 1 hat (A,B=0, A=0,B=1 und A,B=1).

Die ganze Sache funktioniert natürlich nur dann, wenn man für A und B nicht nur Elementarereignisse einsetzen kann, sondern auch schon erzeugte logische Formeln/Polynome. Die Übersetzungsregeln ändern sich nur geringfügig, vorausgesetzt wir haben bereits mit den obigen Regeln die Formeln F und G in die Polynome f und g übersetzt.

Setzen wir für f die Übersetzung von A, also a+1, und für g die Übersetzung von B, also b+1, ein, so erhalten wir über 𝔽2 die obige Tabelle zurück. Hierbei ist zu beachten, dass im Polynomring 𝔽2[x,y] 1+1=0 gilt, also gilt auch 2f=0 unabhängig von f.


Beispiel

In einer Firma werden zur Zeit die drei Projekte A, B und C bearbeitet. Um herauszufinden, welche Projekte bis zum Ende der Woche abgeschlossen werden, befragt der Chef der Firma die jeweiligen Projektleiter und erhält folgende Angaben:

1) Es können nicht alle Projekte fertiggestellt werden.

2) Um Projekt B fertigstellen zu können, muss Projekt A fertiggestellt sein.

3) Es wird auf jeden Fall Projekt B oder Projekt C fertiggestellt.

4) Projekt C kann nur fertiggestellt werden, wenn Projekt B fertiggestellt ist.

Bestimmen Sie diejenigen Projekte, die bis zum Ende der Woche fertiggestellt werden.


Lösung mit CoCoA

Festlegung der Abkürzungen:

A = "Projekt A wird bis Ende der Woche fertig" = a+1,

B = "Projekt B wird bis Ende der Woche fertig" = b+1,

C = "Projekt C wird bis Ende der Woche fertig" = c+1.


Übersetzung der Aussagen:

"Es können nicht alle Projekte fertiggestellt werden":

F1:=¬(ABC).

Zuerst übersetzten wir (AB) mittels der ersten Tabelle zu ab+1=:f und C zu c+1=:g, damit wird dann (siehe zweite Tabelle) ((AB)C) zu (ab+1)(c+1)+(ab+1)+(c+1)=abc+1. Jetzt fehlt nur noch das ¬ in der Übersetzung, also lautet das zugehölrige Polynom

f1=abc.

"Um Projekt B fertigstellen zu können, muss Projekt A fertiggestellt sein":

F2:=(BA),

mit dem zugehörigen Polynom

f2=ba+b.

"Es wird auf jeden Fall Projekt B oder Projekt C fertiggestellt":

F3:=(BC),

das zugehörige Polynom lautet

f3=bc+b+c+1.

"Projekt C kann nur fertiggestellt werden, wenn Projekt B fertiggestellt ist":

F4:=(CB),

und

f4=cb+c.


CoCoA

Zuerst müssen wir in {\CoCoA} den passenden Ring eingeben

Use S::=Z/(2)[a,b,c];

Dann brauchen wir noch das Körperideal, welches die Nullstellen auf $0$ und $1$ festlegt

K:=Ideal(a^2+a, b^2+b, c^2+c);

Als nächstes geben wir die übersetzten Polynome ein

I:=Ideal(abc, ba+b, bc+b+c+1, cb+c) + K;

und erhalten mittels

ReducedGBasis(I);

die Antwort

[b+1, a+1, c].


Antwort:

Also müssen der Wahrheitswert von A, die Nullstelle von a+1, und der Wahrheitswert von B, die Nullstelle von b+1, 1 sein und der Wahrheitswert von C, die Nullstelle von c, 0. Also werden die Projekte A und B bis Ende der Woche fertig.






Weiter geht's im Kapitel Ein rundes Beispiel.