TDP015 Lektion 1: Logik
29 mars 2015
1
Uppgifter
1) Vilka av påståendena nedan stämmer? Om ett påstående stämmer, visa det
med en sanningstabell. Hitta annars en tilldelning som visar att det inte är
korrekt.
a) p ∧ q är sant om minst ett av p/q är sant (annars falskt).
b) p ∧ q är sant om q är falskt.
c) p ↔ q är sant om p och q har samma sanningsvärde (ett slags logiskt =).
d) p → q är sant så fort p är sant.
e) p → q är sant om q är minst lika sant som p (annars falskt) (ett slags
logiskt ≤)
f) p ∨ q är falskt när båda är falska, och sann annars.
g) ¬p ∨ p är alltid sant.
h) p ∧ q är falskt så fort något av p/q är falskt (ett slags logiskt minfunktion).
2) Vi har oftast inte tillgång till operatorer för → eller ↔ utan får förlita oss
på or, and, not (motsvarande ∨, ∧ och ¬). Alla implikationer kan dock
skrivas om till dessa. Visa att formlerna uttrycker samma sak, med hjälp av
sanningstabeller1 :
a) p → q ≡ ¬p ∨ q
b) (p ∧ q) → r ≡ (¬p ∨ ¬q) ∨ r
c) [p ∧ (¬q → ¬p)] → q ≡ 1
3) På samma sätt som 1+2*3 ska läsas 1+(2*3)2 , finns det prioriteringsregler som anger hur logiska formler ska läsas. Dessa regler gäller även logiska
uttryck som konstrueras i till exempel Python.
Skriv ut följande uttryck eller kodstycken med parenteser som precist och
otvetydigt anger deras betydelse:
a) p ∧ q ∧ r → s
b) (p → q ∨ r) ∧ ¬q
1≡
säger att formlerna alltid har samma sanningsvärden, i alla möjliga tilldelningar, oavsett
om p är sant eller falskt, q är S/F och så vidare. De är ekvivalenta.
2 Vilket är 7. Vi läser det alltså inte (1+2)*3 = 9.
1
c) p ∨ q ∨ ¬(r ∧ p)
d) p ∨ q ↔ ¬t
e) Uttrycket p or not p and not q and r. Vi antar att p,q,r är av booltyp.
f) Uttrycket not (p or q) or s and not not t.Vi antar att p,q,s,t är
av bool-typ.
4) Förenkla följande uttryck maximalt (med hjälp av ekvivalenserna på s13 i
kursboken):
(a) (p → p) ∧ ¬p
(b) (p → q) ∨ (q → p)
(c) p ∧ (¬q ∧ (¬p ∨ q))
5) Stämmer följande? Om påståendet stämmer, visa det med hjälp av sanningstabell eller ekvivalenserna ovan. Om det inte gör det, ge ett motexempel
som visar att det inte stämmer.
a) (p ∧ q) → r ≡ p → (q → r)
b) ¬p → p ≡ 1
6) Vi kan uttrycka mycket med hjälp av enkla logiska operatorer. Den användbara operatorn XOR (⊕) - exklusivt eller - definieras utifrån följande sanningstabell:
p
0
0
1
1
q
0
1
0
1
p⊕q
0
1
1
0
a) Visa att ⊕ är associativ, det vill säga att (p ⊕ q) ⊕ r ≡ p ⊕ (q ⊕ r).
b) Hitta två olika logiska uttryck som säger samma sak som - är ekvivalenta
med - p ⊕ q, men som inte innehåller ⊕.
c) Låt pi vara en bit (0/1) ur ett meddelande vi vill kryptera, och ki vara
en bit ur en kryptonyckel. Visa att om vi krypterar meddelandet genom
pi ⊕ ki , så kan vi dekryptera det på samma sätt. Det vill säga, om ci =
(pi ⊕ ki ), så är ci ⊕ ki = pi .3 .
3 Detta
sätt att använda XOR används ofta i mellansteg i symmetriska krypton. Själva
operationen används till exempel för kryptering och generering av nycklar i regionlås för
DVD-filmer.
2