•
(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, ¬, &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
¬ &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 ¬ B ,¬ 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 ¬ C &or B &and ¬ 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 ¬ C &or A &and B &and ¬ 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 ¬ C &or A &and B &and ¬ 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 ¬ C &or B &and ¬ 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,¬ B , C &and ¬ A &or ¬ 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,¬ B , C &and ¬ A &or ¬ 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