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