Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News Sign UpSign In
| Download

Worksheets related to Applied Discrete Structures

Views: 15734
Image: ubuntu2004

An Introduction to Logic using Sage

Applied Discrete Structures by Alan Doerr & Kenneth Levasseur is licensed under a Creative Commons Attribution - Noncommercial - No Derivative Works 3.0 United States License.

Here are a few tips on how to get started using Sage to work logic.

import sage.logic.propcalc as propcalc prop=propcalc.formula f = prop("(a&b)|(a&c)") f
(a&b)|(a&c)
f.truthtable()
a b c value False False False False False False True False False True False False False True True False True False False False True False True True True True False True True True True True
f.ifthen(prop("a")).truthtable()
a b c value False False False True False False True True False True False True False True True True True False False True True False True True True True False True True True True True
f.implies(prop("a"))
True
propcalc.formula("a&(b|c)").equivalent(f)
True
propcalc.formula("(x&y)->z").truthtable()
x y z value False False False True False False True True False True False True False True True True True False False True True False True True True True False False True True True True
f.polish_notation()
'&a|bc'
f.convert_cnf() f
(a|b|c)&(a|b|~c)&(a|~b|c)&(a|~b|~c)&(~a|b|c)
f.tree()
['|', ['&', 'a', 'b'], ['&', 'a', 'c']]
f.is_contradiction()
False
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 greater than 8 relies on the solution of the previous value, , in the same way as we can verify by induction that if the case of can be solved, then we can use it to solve the case of .
def ThreeFive(n): if n==8: return [1,1] previous=ThreeFive(n-1) if previous[1]>0: return [previous[0]+2,previous[1]-1] else: return [previous[0]-3,previous[1]+2]
ThreeFive(56)
[17, 1]