The absorption law in boolean algebra states that a variable combined with a logical operation of itself and another variable simply reduces to the original variable, effectively stripping away redundant logic conditions. In mathematical terms, it is expressed as A + AB = A (for OR/AND) and A(A + B) = A (for AND/OR). While this looks like a trivial textbook identity, in physical circuit design, it changes everything: it directly reduces propagation delay, minimizes gate count, lowers power consumption, and eliminates race conditions caused by redundant signal paths.
When you are designing with FPGAs, writing PLC ladder logic, or wiring discrete 74-series logic on a bench, failing to apply the absorption law means you are building hardware that works harder than it needs to. Let us break down exactly how this law translates from abstract math to physical electrons, and look at a real bench scenario where ignoring it caused a system crash.
The Core Concept: What the Absorption Law Actually Does
At its heart, the absorption law tells you when a secondary condition is logically irrelevant to the final output. If a microcontroller GPIO pin (Signal A) is wired to trigger a relay directly, and you also wire that same GPIO pin through an AND gate with a sensor (Signal B) to trigger the same relay in parallel, the sensor does absolutely nothing to change the final outcome. If A is HIGH, the relay pulls in regardless of B. If A is LOW, the AND gate blocks B anyway, so the relay stays off.
1. A + AB = A (A OR (A AND B) reduces to A)
2. A(A + B) = A (A AND (A OR B) reduces to A)
According to foundational digital design principles outlined by Electronics Tutorials, minimizing boolean expressions is not just an academic exercise; it is a mandatory step before physical implementation. Every extra gate you leave in a design adds nanoseconds of propagation delay, draws quiescent current, and takes up physical silicon area or PCB real estate.
A Worked Numeric Example with Real Logic Levels
Let us prove the A + AB = A identity using real binary logic levels to see why the 'B' variable is completely absorbed.
| Signal A (Master) | Signal B (Secondary) | A AND B (AB) | A OR AB (Final Output) | Reduced Output (Just A) |
|---|---|---|---|---|
| 0 (LOW) | 0 (LOW) | 0 | 0 + 0 = 0 | 0 |
| 0 (LOW) | 1 (HIGH) | 0 | 0 + 0 = 0 | 0 |
| 1 (HIGH) | 0 (LOW) | 0 | 1 + 0 = 1 | 1 |
| 1 (HIGH) | 1 (HIGH) | 1 | 1 + 1 = 1 | 1 |
Notice rows 2 and 4. In row 2, B is HIGH, but because A is LOW, the AND gate forces the AB term to 0. The output remains 0. In row 4, B is HIGH and passes through the AND gate, but the output is already being held HIGH by the direct A path. The B signal is mathematically and physically absorbed.
Where You Meet This in Practice
You will run into the absorption law—and the consequences of ignoring it—across three main domains of electrical and electronic design:
- Discrete 74-Series Logic: When wiring physical ICs like the 74HC08 (AND) and 74HC32 (OR) on a breadboard or perfboard. Failing to absorb terms wastes IC packages, increases BOM costs, and complicates wiring.
- PLC Ladder Logic: In industrial automation (like Allen-Bradley or Siemens PLCs), redundant parallel branches containing series contacts waste PLC scan cycle time. While modern PLCs are fast, unoptimized logic in a high-speed interrupt routine can cause scan-time overruns.
- FPGAs and CPLDs: When writing Verilog or VHDL, the synthesis tool usually applies the absorption law automatically. However, if you are manually mapping logic to Look-Up Tables (LUTs) or debugging a timing closure failure, recognizing absorbed terms helps you understand why the fitter removed a signal path you thought you coded.
Real-World Scenario: Fixing a 3D Printer Ground Bounce Crash
Abstract math is fine, but what happens when you ignore the absorption law on the workbench? Here is a walkthrough of a real debugging session involving a 3D printer heated bed controller.
The Setup:
A junior technician was building a discrete logic lockout circuit for a 3D printer's 40A heated bed MOSFET. The requirement was simple: The bed should heat if the PID Controller Output (Signal A) is HIGH. The technician also added a Manual Override toggle switch (Signal B) 'just in case', wiring it so the bed heats if the PID Output (A) AND the Manual Override (B) are both HIGH. The final equation implemented in hardware was Y = A + AB.
The Numbers:
The circuit used a 74HC08 quad AND gate (typical propagation delay $t_{pd}$ = 14ns) and a 74HC32 quad OR gate ($t_{pd}$ = 14ns). The manual override switch was a standard mechanical SPST toggle.
The Outcome:
On the bench, testing with LEDs, the circuit worked perfectly. The LED lit up when A was HIGH, and the B switch seemed to do nothing (as expected by the math), but the tech left it wired 'for future features'.
What Went Wrong:
When installed in the printer, the firmware kept randomly crashing and resetting the microcontroller every time the operator flipped the Manual Override switch, even though the switch was logically redundant.
Here is the physical reality: Mechanical switches exhibit severe contact bounce. When the operator flipped B, it bounced rapidly between 0 and 1. Because A was HIGH (PID was calling for heat), the $AB$ term toggled rapidly at the input of the 74HC32 OR gate.
Even though the direct 'A' path held the OR gate output HIGH, the internal CMOS transistors of the 74HC32 OR gate still drew a spike of switching current ($I_{CC}$) every time the $AB$ input pin toggled. This rapid current draw, combined with long, poorly bypassed power rails on the perfboard, caused a 400mV ground bounce on the shared logic ground. That ground bounce spiked the microcontroller's reset pin low, crashing the firmware.
The Fix:
Apply the absorption law: A + AB = A. The B switch and the 74HC08 AND gate were logically useless. We desoldered the AND gate, removed the B switch from the logic path, and wired Signal A directly to the OR gate (which was later removed entirely). The redundant toggling stopped, the ground bounce vanished, and the microcontroller stopped crashing. We saved $0.30 in BOM cost and fixed a critical reliability bug using nothing but boolean algebra.
Common Confusions and Pitfalls
When studying boolean laws for the Digilent Real Analog curriculum or similar engineering courses, students frequently mix up the absorption law with other identities.
- Confusing with the Idempotent Law: The idempotent law states that A + A = A and A * A = A. This deals with a variable combined with itself. Absorption deals with a variable combined with a product or sum containing itself.
- Confusing with the Consensus Theorem: The consensus theorem (AB + A'C + BC = AB + A'C) eliminates a redundant term (BC) that is covered by the other two terms. Absorption is much simpler; it eliminates a term that contains the exact same variable as the standalone term.
- Forgetting De Morgan's Equivalents: If you are building a circuit using only NAND gates (which is common in silicon design to save mask layers), you must apply De Morgan's laws first before you can clearly see the absorption opportunities in the inverted logic.
Frequently Asked Questions
Can I rely on my PLC or FPGA software to apply the absorption law automatically?
Yes, modern synthesis tools (like Xilinx Vivado or Intel Quartus) and PLC compilers (like Rockwell Studio 5000) have built-in boolean minimization engines that will automatically strip out absorbed terms. However, writing clean, minimized logic is still best practice. It makes your code easier for other humans to read, reduces the compilation time, and helps you avoid logical design flaws before they reach the compiler.
Does the absorption law apply to analog circuits or AC power systems?
No. Boolean algebra strictly governs discrete, two-state digital logic (1/0, True/False, HIGH/LOW). It does not apply to continuous analog signals, AC waveform superposition, or RMS voltage calculations. In AC theory, adding a signal to a scaled version of itself results in amplitude changes and phase shifts, not logical absorption.
What if I want the 'B' signal to trigger an indicator light, even if it doesn't affect the main output?
Then 'B' is no longer logically redundant to the entire system, only to the main output 'Y'. In this case, you route 'B' to a separate buffer or LED driver. You still apply the absorption law to the main power logic (Y = A) to prevent the timing and ground-bounce issues described in the scenario above, while handling the indicator as an independent parallel circuit.






