Ruby, Software Development, Boolean, Augustus De Morgan.
that the negation of a conjunction is equivalent to the disjunction of the negations of the individual terms. In other words, if we have an expression of the form !(p && q), we can rewrite it as (!p || !q). Like the first law, this allows us to negate complex expressions by breaking them down into