︠d7567588-4f6b-4ffe-9b2b-1b5a41a58f09i︠ %html
Here are a few tips on how to get started using Sage to work logic.
︡fdffa321-db92-449a-baed-bb4319fdb803︡{"md":"Here are a few tips on how to get started using Sage to work logic.
"}︡{"done":true}︡ ︠623bea74-e651-4d2d-af3b-75daae7e7ca9s︠ import sage.logic.propcalc as propcalc prop=propcalc.formula f = prop("(a&b)|(a&c)") f ︡c4d9e2b2-196d-493c-a4e9-806ee2bfd0bc︡{"stdout":"(a&b)|(a&c)\n"}︡{"done":true}︡ ︠6b37fbcb-03da-470a-bc36-8cec83d218ac︠ f.truthtable() ︡9a2a9a54-2d93-4f6e-8dd7-22e67bfdbd06︡{"stdout":"a b c value\nFalse False False False \nFalse False True False \nFalse True False False \nFalse True True False \nTrue False False False \nTrue False True True \nTrue True False True \nTrue True True True \n\n"}︡{"done":true}︡ ︠fcc45fdc-b613-4d0e-9f86-ee7eef302f8es︠ ︡09554269-112c-487a-9851-66761094a2df︡{"done":true}︡ ︠745745ad-6db1-4eda-b601-39eb58e189d9s︠ f.ifthen(prop("a")).truthtable() ︡d61f22c6-effd-4458-850b-d8ce2c07f2df︡{"stdout":"a b c value\nFalse False False True \nFalse False True True \nFalse True False True \nFalse True True True \nTrue False False True \nTrue False True True \nTrue True False True \nTrue True True True \n\n"}︡{"done":true}︡ ︠09eff639-10a7-45db-b7b1-f71179b6781cs︠ f.implies(prop("a")) ︡ce024a71-4333-413f-8c6c-3024f9af5e4b︡{"stdout":"True\n"}︡{"done":true}︡ ︠b06c71f4-b50b-4ff0-8543-b41051659826s︠ propcalc.formula("a&(b|c)").equivalent(f) ︡7ffcec87-e302-4217-b0b7-37bc74567043︡{"stdout":"True\n"}︡{"done":true}︡ ︠23c8ee10-e953-46d0-9987-5a1ca70015c9︠ ︡0fc1f4ed-6078-46b2-a635-5029bd686131︡ ︠61a576f3-0d87-45b1-940f-2d907e83702es︠ propcalc.formula("(x&y)->z").truthtable() ︡a19fc8f7-d8f9-4cec-a48d-8ef816f1c7ce︡{"stdout":"x y z value\nFalse False False True \nFalse False True True \nFalse True False True \nFalse True True True \nTrue False False True \nTrue False True True \nTrue True False False \nTrue True True True \n\n"}︡{"done":true}︡ ︠84f04467-5fc1-4dfe-a01e-3397486a3a45s︠ f.polish_notation() ︡8d5e4730-9538-4547-9693-8610ecf53a2f︡{"stdout":"'&a|bc'\n"}︡{"done":true}︡ ︠fa7debab-80b3-4a0f-b199-8406214a43cas︠ f.convert_cnf() f ︡3460812e-ad63-461d-bf2e-848631c0c403︡{"stdout":"(a|b|c)&(a|b|~c)&(a|~b|c)&(a|~b|~c)&(~a|b|c)\n"}︡{"done":true}︡ ︠0c255245-8f0d-4328-a6a1-7749061d1a26s︠ f.tree() ︡db1b876f-e6f7-425b-9237-c5aa48660d11︡{"stdout":"['|', ['&', 'a', 'b'], ['&', 'a', 'c']]\n"}︡{"done":true}︡ ︠debe03ff-b2f8-4223-b0d3-4538591dc130s︠ f.is_contradiction() ︡38c549b6-80a0-4ef8-8a74-0aa0b00706f6︡{"stdout":"False\n"}︡{"done":true}︡ ︠ae4838d4-1c05-4b7b-ab05-35a46a807d05︠ ︡957d2f90-8286-4f75-9513-b7863b392649︡ ︠9e98e2f5-996b-434f-a7b8-dbe9d5e4bb73i︠ %html Here is an algorithmic solution to exercise 10 at the end of Section 3.7, on Mathematical Induction. The problem was to prove that all postage amounts greater than or equal to 8 can be made using 3 and 5 cent stamps. Notice that the solution for any value of