33 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
---
 | 
						|
categories:
 | 
						|
  - Logic
 | 
						|
  - Computer Architecture
 | 
						|
tags: [logic, propositional-logic, nand-to-tetris]
 | 
						|
---
 | 
						|
 | 
						|
# Boolean functions
 | 
						|
 | 
						|
An example of a Boolean function:
 | 
						|
 | 
						|
$$
 | 
						|
f(x,y,z) = (x \land y) \lor (\lnot(x) \land z )
 | 
						|
$$
 | 
						|
 | 
						|
Here is a work through where $f(1, 0, 1)$:
 | 
						|
 | 
						|
- The first disjunction : $\lnot(x) \land z$ is false because $x$ is 1 and $z$ is 0
 | 
						|
- The second disjunction: $x \land y$ is false because $x$ is 1 and $y$ is 1
 | 
						|
- The overall function returns false because the main connective is disjunction and both of its disjuncts are false
 | 
						|
 | 
						|
We can compute all possible outputs of the function by constructing a [truth table](/Logic/Propositional_logic/Truth-tables.md) with each possible variable as the truth conditions and the output of the function as the truth value:
 | 
						|
 | 
						|
| $x$ | $y$ | $z$ | $f(x,y,z) = (x \land y) \lor (\lnot(x) \land z )$ |
 | 
						|
| --- | --- | --- | ------------------------------------------------- |
 | 
						|
| 0   | 0   | 0   | 0                                                 |
 | 
						|
| 0   | 0   | 1   | 1                                                 |
 | 
						|
| 0   | 1   | 0   | 0                                                 |
 | 
						|
| 0   | 1   | 1   | 1                                                 |
 | 
						|
| 1   | 0   | 0   | 0                                                 |
 | 
						|
| 1   | 0   | 1   | 0                                                 |
 | 
						|
| 1   | 1   | 0   | 1                                                 |
 | 
						|
| 1   | 1   | 1   | 1                                                 |
 |