• Nem Talált Eredményt

Logikai műveletek a Logic csomag használatával

In document Bevezetés a számításelméletbe (Pldal 39-49)

(1.5.3) (1.5.3)

>

>

A fenti két implikáció az "akkor és csak akkor" szerkezettel foglalható egy összetett állításba.

Legyen H az az ítélet, hogy `A négyszög húrnégyszög`, S pedig az, hogy `A négyszög szemközti szögeinek összege 180°.

Ekkor a "Egy négyszög akkor és csak akkor húrnégyszög, ha szemközti szögeinek összege 180°!"

állítás logikai műveletekkel leírva

(H0S)o(S0H) alakot ölt. Ezt a műveletet ekvivalenciának nevezzük.

Ekvivalencia

A5B= i, ha A=i és B=i vagy A=h és B=h h, egyébként

Az "akkor és csak akkor" nyelvi kifejezés mellett sokszor használatos a következő is:

Az A állítás teljesülése szükséges és elegendő feltétele B állítás teljesülésének, vagy fordítva B állítás teljesülése szükséges és elegendő feltétele az A állítás bekövetkeztének.

igtab(A and B or not(A) and not(B));

A B A and B or not A or B

i i i

i h h

h i h

h h i

Logikai műveletek a Logic csomag használatával

A Logic csomag a logikai kifejezésekkel való műveletek elvégzésére, a logikai formulák átalakítására szolgáló utasítások együttese.

A Logic csomag saját operátorokat használ, ezek formája némileg eltér a matematikában szokásostól.

A Logic csomag kétértékű (true, false) logikai rendszert használ, szemben a standard Maple háromértékű (true, false, fail [= nem definiált, ismeretlen érték]) logikai rendszerével). Ezért kell a Logic csomagban a szokásostól eltérő, &and, &iff, &implies, &nand, &nor, &not, &or, and &xor operátorokat használni.

A két jelölési rendszer egyikéről a másikra transzformációkkal áttérhetünk (Import, Export) A Logic csomag utasításai

The following is a list of available commands.

&and &iff &implies &nand &nor

&not &or &xor BooleanSimplify Canonicalize Contradiction Dual Environment Equivalent Export Implies Import Normalize Random Satisfy Tautology TruthTable

Egy-egy konkrét ,a Logic csomagból való utasítás áttekintésére lásd: Getting Help with a Command in a Package.

(1.7.2)

A `Ha A akkor B' alakú matematikai állításokat néha könnyebb a következő azonosság alapján bizonyítani. (a kontrapozíció elve)

A0B=¬B0¬A. Igazoljuk az azonosságot!

Megoldás

Készítsük el mindkét oldal értéktáblázatát

igtab(A implies B),igtab(not(B) implies not(A));

A B A0B

Láthatóan a két igazságtábla megegyezik, tehát az azonosság fennáll. Az azonosság igazolásához használhatjuk a Maple

Equivalent utasítását is. Ha a két kifejezés azonosan egyenlő, akkor az Equivalent "true", egyébként "false", az általunk bevezetett jelöléssel "i" illetve "h" értéket ad. Ehhez azonban először a kifejezéseket át kell alakítani a Logic csomaghoz illeszkedő formátumura:

kif1:=Import(A implies B);

kif1:=Logic:-&implies A,B kif2:=Import(not(B) implies not(A));

kif2:=Logic:-&implies &not B ,&not A Equivalent(kif1,kif2);

i 2.1.5. Példa

Készítsük el a következő formulák értéktáblázát 2.1. ¬Ao¬ AnB ;

2.2. A0 B0C 0 A0B 0 A0C

Megoldás

Használjuk az igtab eljárást!

igtab(not(A) and not(A or B));

A B not A or A or B

i i h

i h h

h i h

h h i

igtab((A implies (B implies C)) implies ((A implies B)

(1.7.7) (1.7.7)

>

>

(1.7.6) (1.7.6)

>

>

>

>

implies (A implies C)));

A B C A0 B0C 0 A0B 0 A0C

i i i i

i i h i

i h i i

i h h i

h i i i

h i h i

h h i i

h h h i

A formula minden igazságértékelésre i értéket ad. Az ilyen formulát tautológiának nevezzük.

2.1.6. Példa

Mely p, q, r esetén teljesülnek a következő egyenletek?

3.1. poqo¬r=i;

3.2. poq 0r=h

3.3. po¬q 5 ¬poq =h Megoldás

Az igtab eljárással képezzük a baloldali formulák értéktáblázatát, s kiválasztjuk az értéktábla azon sorait, amelyek a jobboldali logikai konstanssal egyenlő értéket adnak.

3.1.

igtab(p and q and not(r));

p q r p and q and not r

i i i h

i i h i

i h i h

i h h h

h i i h

h i h h

h h i h

h h h h

Az egyenlet megoldása p=i, q=i, r=h.

3.2.

igtab((p and q) implies r);

>

igtab((p and not(q)) and (not(p) and q) or not(p and not(q)) and not(not(p) and q));

p q p and not q and not p and q or not p and not q or not p and q

Hozzuk egyszerűbb alakra a következő kifejezéseket:

1. AoB n CoD o Ao¬ C n Bo¬ D 2. ( A0¬ B 0C o ¬ An ¬ BoC

Megoldás

1. Hozzuk létre a kifejezést:

kif:=((A and B) or (C and D)) and ((A and not(C)) or (B and not(D)));

kif:= A and B or C and D and A and not C or B and not D

Az egyszerűsítést a Logic csomag BooleanSimplify eljárásával végezzük. Ezért az Import utasítással át kell alakítanunk a Logic csomagban használatos formára.

kif:=Import(kif);

kif:= A &and B &or C &and D &and A &and &not C &or B &and &not D A TruthTable utasítás képezi a kifejezés értéktáblázatát

T := TruthTable(kif,[A,B,C,D]);

T:=table h,h,i,h =h, i,h,i,i =h, h,i,i,h =h, i,i,h,h =i, h,i,h,h =h, i, i,h,i =i, h,h,i,i =h, i,i,i,i =h, h,h,h,i =h, h,h,h,h =h, i,h,h,h

> A BooleanSimplify egyszerűbb alakra hozza a logikai kifejezéseket

kif_1:=BooleanSimplify(kif);

kif_1:= A &and B &and &not C &or A &and B &and &not D

Ellenőrzésképpen elkészítjük az egyszerűsített kifejezés és az eredeti kifejezés értéktábláját, s összevetjük azokat.

Először az egyszerűsített kifejezés értéktábláját képezzük. A TruthTable utasítás generálja a táblát T1 := TruthTable(kif_1,[A,B,C,D]);

T1:=table h,h,i,h =h, i,h,i,i =h, h,i,i,h =h, i,i,h,h =i, h,i,h,h =h, i,i,h,i =i, h,h,i,i =h, i,i,i,i =h, h,h,h,i =h, h,h,h,h =h, i,h,h,h

=h, h,i,h,i =h, i,h,i,h =h, i,h,h,i =h, i,i,i,h =i, h,i,i,i =h

Az igazságtábla áttekinthetőbb megjelenítéséhez előállítjuk és listákban helyezzük el annak sorait.

Ezt az ítéletváltozókkal megegyező számú egymásba ágyazott ciklussal érjük el.

H:={i,h}:

Majd a listákból mátrixot készítünk:

linalg[stackmatrix]([A,B,C,D,kif_1],L);

(1.7.16) (1.7.16)

>

>

>

>

(1.7.17) (1.7.17)

>

>

A B C D A &and B &and &not C &or A &and B &and &not D

h h h h h

h h h i h

h h i h h

h h i i h

h i h h h

h i h i h

h i i h h

h i i i h

i h h h h

i h h i h

i h i h h

i h i i h

i i h h i

i i h i i

i i i h i

i i i i h

Előállítjuk az eredeti kifejezés igazságtábláját is : L:=NULL:

for n in H do for j in H do for k in H do for m in H do

L:=L,[(n,j,k,m,T[n,j,k,m])]

od od od od;

linalg[stackmatrix]([A,B,C,D,kif],L);

A, B, C, D, A &and B &or C &and D &and A &and &not C &or B &and &not D ,

h, h, h, h, h , h, h, h, i, h , h, h, i, h, h , h, h, i, i, h , h, i, h, h, h ,

>

>

>

>

(1.7.18) (1.7.18) h, i, h, i, h ,

h, i, i, h, h , h, i, i, i, h , i, h, h, h, h , i, h, h, i, h , i, h, i, h, h , i, h, i, i, h , i, i, h, h, i , i, i, h, i, i , i, i, i, h, i , i, i, i, i, h

A táblázatot megjeleníthetjük a szokásos jelölésekkel is:

kif_e:=Export(%);

kif_e:=

A B C D A and B or C and D and A and not C or B and not D

h h h h h

h h h i h

h h i h h

h h i i h

h i h h h

h i h i h

h i i h h

h i i i h

i h h h h

i h h i h

i h i h h

i h i i h

i i h h i

i i h i i

i i i h i

i i i i h

Láthatóan a két tábla minden sora megegyezik.

2. ( A0¬B 0C o ¬An ¬BoC Az 1. megoldásához hasonlóan járunk el.

kif:=((A implies not(B)) implies C) and (not(A) or (not(B)

>

kif:=Logic:-&implies Logic:-&implies A,&not B , C &and &not A &or &not B &and C

>

>

(1.7.25) (1.7.25)

>

>

>

>

(1.7.26) (1.7.26) (1.7.24) (1.7.24) od;

linalg[stackmatrix]([A,B,C,kif],L);

A, B, C, Logic:-&implies Logic:-&implies A,&not B , C &and &not A &or &not B &and C ,

h, h, h, h , h, h, i, i , h, i, h, h , h, i, i, i , i, h, h, h , i, h, i, i , i, i, h, h , i, i, i, h

2.1.8. Példa

Fejezzük ki diszjunkció és a konjunkció és az ekvivalencia műveletét az implikáció és a negáció segítségével!

Megoldás

A diszjunkció akkor és csak akkor ad hamis értéket, h mindkét operandusa hamis. Az implikáció akkor és csak akkor ad hamis értéket, ha előtadja igaz, utótagja hamis. Ennélfogva

AnBh¬A0B

("≡":azonosan egyenlő) Az igazságtábla is bizonyítja megoldásunk helyességét:

igtab(A or B, not(A) implies B);

A B A or B not A0B

i i i i

i h i i

h i i i

h h h h

igtab(A or B, not(B) implies A);

A B A or B not B0A

i i i i

i h i i

h i i i

h h h h

A konjunkció egyetlen esetben igaz, ha az előtag és az utótag is igaz. Az implikáció pedig egyetlen esetben hamis. Ezért az implikációt tagadnunk kell, és akkor kell hamisnak lennie, ha

(1.7.27) (1.7.27)

(1.7.28) (1.7.28)

>

>

>

>

A=B=i. Ezért az A 0¬B -t kell tagadnunk.

Tehát a megoldás

AoBh¬ A0¬B Az igazságtábla is bizonyítja megoldásunk helyességét:

igtab(A and B,not(A implies not(B)));

A B A and B not A0not B

i i i i

i h h h

h i h h

h h h h

Az ekvivalencia definíciójából következik, hogy

A5B ≡ AoB n¬ AnB

A diszjunkcióra és a konjunkcióra kapott formulát az előző formulába helyettesítve adódik:

A5B ≡ AoB n¬ AnB h¬(

¬ A0¬B 0¬ ¬A0B h A0¬B 0¬ ¬A0B , tehát

A5B ≡ A0¬B 0¬ ¬A0B Ellenőrizzük eredményünket az igtab eljárással:

igtab((A implies not(B)) implies not(not(A) implies B));

A B A0not B 0not not A0B

i i i

i h h

h i h

h h i

Feladatok

1. Feladat

Bizonyítsuk be a logikai műveletek egymással való kifejezésére vonatkozó azonosságokat!

művelet |

kifejezés AoB AnB A0B A5B

konjunkció AoB ¬ ¬Ao¬B ¬ Ao¬B ¬ Ao¬B

o¬ Bo¬A

diszjunkció ¬ ¬An¬B AnB ¬AnB ¬ ¬AnB n ¬B

nA

implikáció ¬ A0¬B ¬A0B A0B ¬ A0B 0¬ B

3.

3.

2.

2.

4.

4.

1.

1.

0A

(Megmutatható, hogy az ekvivalencia és a negáció segítségével sem a konjunkciót, sem a diszjunkciót, sem az implikációt nem lehet kifejezni)

2. Feladat

Mely p, q, r esetén teljesülnek a következő egyenletek?

2.1. po¬qo¬r=h;

2.2. ¬pnq o¬r=i

2.3. pn¬q 5 ¬poq =h 3. Feladat

Mutassa meg, hogy a következő formulák minden igazságértékelésre igaz logikai értéket adnak!

(Az ilyen formulát tautológiának nevezik) 3.1. A o A0B 0B

3.2. ((A0B o¬B 0¬A

In document Bevezetés a számításelméletbe (Pldal 39-49)