truth table: Binary Operations
The last chapter covered 2 types of operations. Nullary Operations which do not take input, and Unary Operations which take 1 input.
There are also Binary Operations, these take 2 inputs. Each of the inputs in this exercise will be True or False which means there are 4 possible ways the inputs can be sent to an operation
These combinations give 16 binary operations, each operations returns True or False when it gets input. Here are the 16 operations that are covered in these chapters and what they return
Material Implication returns
Logical Equality returns
first_input == second_inputTrue when
first_inputandsecond_inputare equal
Logical NOR returns
Negate Second returns
Converse Implication returns
Project First returns
Material NonImplication returns
Exclusive Disjunction returns
first_input != second_inputTrue when
first_inputandsecond_inputare NOT equal
Logical Disjunction returns
Logical NAND returns
Negate First returns
Converse NonImplication returns
Project Second returns
Logical Conjunction returns
Contradiction always returns False
preview
Here are the tests I have at the end of the chapters
1import src.truth_table
2import unittest
3
4
5class TestBinaryOperations(unittest.TestCase):
6
7 def test_contradiction(self):
8 self.assertFalse(src.truth_table.contradiction(True, True))
9 self.assertFalse(src.truth_table.contradiction(True, False))
10 self.assertFalse(src.truth_table.contradiction(False, True))
11 self.assertFalse(src.truth_table.contradiction(False, False))
12
13 def test_logical_conjunction(self):
14 self.assertTrue(src.truth_table.logical_conjunction(True, True))
15 self.assertFalse(src.truth_table.logical_conjunction(True, False))
16 self.assertFalse(src.truth_table.logical_conjunction(False, True))
17 self.assertFalse(src.truth_table.logical_conjunction(False, False))
18
19 def test_project_second(self):
20 self.assertTrue(src.truth_table.project_second(True, True))
21 self.assertFalse(src.truth_table.project_second(True, False))
22 self.assertTrue(src.truth_table.project_second(False, True))
23 self.assertFalse(src.truth_table.project_second(False, False))
24
25 def test_converse_non_implication(self):
26 self.assertFalse(src.truth_table.converse_non_implication(True, True))
27 self.assertFalse(src.truth_table.converse_non_implication(True, False))
28 self.assertTrue(src.truth_table.converse_non_implication(False, True))
29 self.assertFalse(src.truth_table.converse_non_implication(False, False))
30
31 def test_negate_first(self):
32 self.assertFalse(src.truth_table.negate_first(True, True))
33 self.assertFalse(src.truth_table.negate_first(True, False))
34 self.assertTrue(src.truth_table.negate_first(False, True))
35 self.assertTrue(src.truth_table.negate_first(False, False))
36
37 def test_logical_nand(self):
38 self.assertFalse(src.truth_table.logical_nand(True, True))
39 self.assertTrue(src.truth_table.logical_nand(True, False))
40 self.assertTrue(src.truth_table.logical_nand(False, True))
41 self.assertTrue(src.truth_table.logical_nand(False, False))
42
43 def test_tautology(self):
44 self.assertTrue(src.truth_table.tautology(True, True))
45 self.assertTrue(src.truth_table.tautology(True, False))
46 self.assertTrue(src.truth_table.tautology(False, True))
47 self.assertTrue(src.truth_table.tautology(False, False))
48
49 def test_logical_disjunction(self):
50 self.assertTrue(src.truth_table.logical_disjunction(True, True))
51 self.assertTrue(src.truth_table.logical_disjunction(True, False))
52 self.assertTrue(src.truth_table.logical_disjunction(False, True))
53 self.assertFalse(src.truth_table.logical_disjunction(False, False))
54
55 def test_exclusive_disjunction(self):
56 self.assertFalse(src.truth_table.exclusive_disjunction(True, True))
57 self.assertTrue(src.truth_table.exclusive_disjunction(True, False))
58 self.assertTrue(src.truth_table.exclusive_disjunction(False, True))
59 self.assertFalse(src.truth_table.exclusive_disjunction(False, False))
60
61 def test_material_non_implication(self):
62 self.assertFalse(src.truth_table.material_non_implication(True, True))
63 self.assertTrue(src.truth_table.material_non_implication(True, False))
64 self.assertFalse(src.truth_table.material_non_implication(False, True))
65 self.assertFalse(src.truth_table.material_non_implication(False, False))
66
67 def test_project_first(self):
68 self.assertTrue(src.truth_table.project_first(True, True))
69 self.assertTrue(src.truth_table.project_first(True, False))
70 self.assertFalse(src.truth_table.project_first(False, True))
71 self.assertFalse(src.truth_table.project_first(False, False))
72
73 def test_converse_implication(self):
74 self.assertTrue(src.truth_table.converse_implication(True, True))
75 self.assertTrue(src.truth_table.converse_implication(True, False))
76 self.assertFalse(src.truth_table.converse_implication(False, True))
77 self.assertTrue(src.truth_table.converse_implication(False, False))
78
79 def test_negate_second(self):
80 self.assertFalse(src.truth_table.negate_second(True, True))
81 self.assertTrue(src.truth_table.negate_second(True, False))
82 self.assertFalse(src.truth_table.negate_second(False, True))
83 self.assertTrue(src.truth_table.negate_second(False, False))
84
85 def test_logical_nor(self):
86 self.assertFalse(src.truth_table.logical_nor(True, True))
87 self.assertFalse(src.truth_table.logical_nor(True, False))
88 self.assertFalse(src.truth_table.logical_nor(False, True))
89 self.assertTrue(src.truth_table.logical_nor(False, False))
90
91 def test_logical_equality(self):
92 self.assertTrue(src.truth_table.logical_equality(True, True))
93 self.assertFalse(src.truth_table.logical_equality(True, False))
94 self.assertFalse(src.truth_table.logical_equality(False, True))
95 self.assertTrue(src.truth_table.logical_equality(False, False))
96
97 def test_material_implication(self):
98 self.assertTrue(src.truth_table.material_implication(True, True))
99 self.assertFalse(src.truth_table.material_implication(True, False))
100 self.assertTrue(src.truth_table.material_implication(False, True))
101 self.assertTrue(src.truth_table.material_implication(False, False))
102
103
104# Exceptions seen
105# AssertionError
106# AttributeError
107# TypeError
108# SyntaxError