From d187579bffc742bc1c06300d053791f79e95edec Mon Sep 17 00:00:00 2001 From: thomasabishop Date: Sun, 18 Dec 2022 13:00:05 +0000 Subject: [PATCH] Autosave: 2022-12-18 13:00:05 --- .../Hardware_abstraction_and_modularity.md | 19 ++++++++++++++++ Logic/Propositional_logic/Boolean_algebra.md | 22 +++++++++++++++++++ .../Propositional_logic/Boolean_functions.md | 10 ++++----- 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 Logic/Propositional_logic/Boolean_algebra.md diff --git a/Computer_Architecture/Hardware_abstraction_and_modularity.md b/Computer_Architecture/Hardware_abstraction_and_modularity.md index 7201ce6..33eed68 100644 --- a/Computer_Architecture/Hardware_abstraction_and_modularity.md +++ b/Computer_Architecture/Hardware_abstraction_and_modularity.md @@ -6,3 +6,22 @@ tags: [abstraction, modules] --- # Hardware abstraction and modularity + +In computer architecture we deal with complexity by breaking the system into **modules**. For each module we distinguish **_abstraction_** from **_implementation_**. + +
+
abstraction
+
what the module does
+
implementation
+
how it does it
+
+ +When using a module as a building block you are to focus exclusively on the module's abstraction, ignoring completely its implementation details. + +> The abstraction-implementation paradigm helps developers manage complexity and maintain sanity: by dividing an overwhelming system into well-defined modules we create manageable chunks of implementation work and localize error detection and correction. + +[N.Nisan, S.Schoken. 2021. **The Elements of Computing Systems** (Second Edition)] + +The design of the diagram below emphasises the role of abstraction and modularity in the movement from transistors to chips: + +![](/img/hardware-abstraction-hierarchy.png) diff --git a/Logic/Propositional_logic/Boolean_algebra.md b/Logic/Propositional_logic/Boolean_algebra.md new file mode 100644 index 0000000..f1e9383 --- /dev/null +++ b/Logic/Propositional_logic/Boolean_algebra.md @@ -0,0 +1,22 @@ +--- +categories: + - Logic +tags: [propositional-logic, algebra] +--- + +# Boolean algebra + +Many of the laws that obtain in the mathematical realm of algebra also obtain for Boolean expressions. + +## The Commutative Law + +$$ + x \land y = y \land x \\ +$$ + +$$ + + x \lor y = y \lor x +$$ + +## The Associative Law diff --git a/Logic/Propositional_logic/Boolean_functions.md b/Logic/Propositional_logic/Boolean_functions.md index 1a77adf..5dd48b8 100644 --- a/Logic/Propositional_logic/Boolean_functions.md +++ b/Logic/Propositional_logic/Boolean_functions.md @@ -1,7 +1,7 @@ --- categories: - - Mathematics -tags: [logic] + - Logic +tags: [logic, propositional-logic] --- # Boolean functions @@ -14,9 +14,9 @@ $$ 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 1 -- The second disjunction: $x \land y$ is true because $x$ is 1 and $y$ is 1 -- The overall function returns true because the main connective is disjunction and one of the disjuncts (the second) evaluates to 1. Thus the output is 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: