Main Page: Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
No edit summary
No edit summary
 
(662 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{Transformation rules}}
This is a preview for the new '''MathML rendering mode''' (with SVG fallback), which is availble in production for registered users.


In [[propositional calculus|propositional logic]] and [[boolean algebra]], '''De Morgan's laws'''<ref>Copi and Cohen</ref><ref>Hurley</ref><ref>Moore and Parker</ref> are a pair of transformation rules that are both [[validity|valid]] [[rule of inference|rules of inference]]. The rules allow the expression of [[Logical conjunction|conjunctions]] and [[Logical disjunction|disjunctions]] purely in terms of each other via [[logical negation|negation]].
If you would like use the '''MathML''' rendering mode, you need a wikipedia user account that can be registered here [[https://en.wikipedia.org/wiki/Special:UserLogin/signup]]
* Only registered users will be able to execute this rendering mode.
* Note: you need not enter a email address (nor any other private information). Please do not use a password that you use elsewhere.


The rules can be expressed in English as:
Registered users will be able to choose between the following three rendering modes:  
<blockquote>The negation of a conjunction is the disjunction of the negations.<br>
The negation of a disjunction is the conjunction of the negations.</blockquote>
or informally as:
<blockquote>"'''''not (A and B)'''''" is the same as "'''''(not A) or (not B)'''''"<br>
<br>
and also,<br>
<br>
"'''''not (A or B)'''''" is the same as "'''''(not A) and (not B)'''''"</blockquote>


The rules can be expressed in [[formal language]] with two propositions ''P'' and ''Q'' as:
'''MathML'''
:<math forcemathmode="mathml">E=mc^2</math>


:<math>\neg(P\land Q)\iff(\neg P)\lor(\neg Q)</math>
<!--'''PNG'''  (currently default in production)
:<math>\neg(P\lor Q)\iff(\neg P)\land(\neg Q)</math>
:<math forcemathmode="png">E=mc^2</math>


where:  
'''source'''
*¬ is the negation operator (NOT)
:<math forcemathmode="source">E=mc^2</math> -->
*<math>\land</math> is the conjunction operator (AND)
*<math>\lor</math> is the disjunction operator (OR)
*⇔  is a [[metalogic]]al symbol meaning "can be replaced in a [[formal proof|logical proof]] with"


Applications of the rules include simplification of logical [[Expression (computer science)|expressions]] in [[computer program]]s and digital circuit designs. De Morgan's laws are an example of a more general concept of [[duality (mathematics)|mathematical duality]].
<span style="color: red">Follow this [https://en.wikipedia.org/wiki/Special:Preferences#mw-prefsection-rendering link] to change your Math rendering settings.</span> You can also add a [https://en.wikipedia.org/wiki/Special:Preferences#mw-prefsection-rendering-skin Custom CSS] to force the MathML/SVG rendering or select different font families. See [https://www.mediawiki.org/wiki/Extension:Math#CSS_for_the_MathML_with_SVG_fallback_mode these examples].


== Formal notation ==
==Demos==


The ''negation of conjunction'' rule may be written in [[sequent]] notation:
Here are some [https://commons.wikimedia.org/w/index.php?title=Special:ListFiles/Frederic.wang demos]:
:<math>\neg(P \and Q) \vdash (\neg P \or \neg Q)</math>


The ''negation of disjunction'' rule may be written as:
:<math>\neg(P \or Q) \vdash (\neg P \and \neg Q)</math>


In [[Rule of inference|rule form]]:
* accessibility:
''negation of conjunction''
** Safari + VoiceOver: [https://commons.wikimedia.org/wiki/File:VoiceOver-Mac-Safari.ogv video only], [[File:Voiceover-mathml-example-1.wav|thumb|Voiceover-mathml-example-1]], [[File:Voiceover-mathml-example-2.wav|thumb|Voiceover-mathml-example-2]], [[File:Voiceover-mathml-example-3.wav|thumb|Voiceover-mathml-example-3]], [[File:Voiceover-mathml-example-4.wav|thumb|Voiceover-mathml-example-4]], [[File:Voiceover-mathml-example-5.wav|thumb|Voiceover-mathml-example-5]], [[File:Voiceover-mathml-example-6.wav|thumb|Voiceover-mathml-example-6]], [[File:Voiceover-mathml-example-7.wav|thumb|Voiceover-mathml-example-7]]
:<math>\frac{\neg (P \and Q)}{\therefore \neg P \or \neg Q}</math>
** [https://commons.wikimedia.org/wiki/File:MathPlayer-Audio-Windows7-InternetExplorer.ogg Internet Explorer + MathPlayer (audio)]
** [https://commons.wikimedia.org/wiki/File:MathPlayer-SynchronizedHighlighting-WIndows7-InternetExplorer.png Internet Explorer + MathPlayer (synchronized highlighting)]
** [https://commons.wikimedia.org/wiki/File:MathPlayer-Braille-Windows7-InternetExplorer.png Internet Explorer + MathPlayer (braille)]
** NVDA+MathPlayer: [[File:Nvda-mathml-example-1.wav|thumb|Nvda-mathml-example-1]], [[File:Nvda-mathml-example-2.wav|thumb|Nvda-mathml-example-2]], [[File:Nvda-mathml-example-3.wav|thumb|Nvda-mathml-example-3]], [[File:Nvda-mathml-example-4.wav|thumb|Nvda-mathml-example-4]], [[File:Nvda-mathml-example-5.wav|thumb|Nvda-mathml-example-5]], [[File:Nvda-mathml-example-6.wav|thumb|Nvda-mathml-example-6]], [[File:Nvda-mathml-example-7.wav|thumb|Nvda-mathml-example-7]].
** Orca: There is ongoing work, but no support at all at the moment [[File:Orca-mathml-example-1.wav|thumb|Orca-mathml-example-1]], [[File:Orca-mathml-example-2.wav|thumb|Orca-mathml-example-2]], [[File:Orca-mathml-example-3.wav|thumb|Orca-mathml-example-3]], [[File:Orca-mathml-example-4.wav|thumb|Orca-mathml-example-4]], [[File:Orca-mathml-example-5.wav|thumb|Orca-mathml-example-5]], [[File:Orca-mathml-example-6.wav|thumb|Orca-mathml-example-6]], [[File:Orca-mathml-example-7.wav|thumb|Orca-mathml-example-7]].
** From our testing, ChromeVox and JAWS are not able to read the formulas generated by the MathML mode.


and
==Test pages ==
''negation of disjunction''
:<math>\frac{\neg (P \or Q)}{\therefore \neg P \and \neg Q}</math>


and expressed as a truth-functional [[Tautology (logic)|tautology]] or [[theorem]] of propositional logic:
To test the '''MathML''', '''PNG''', and '''source''' rendering modes, please go to one of the following test pages:
*[[Displaystyle]]
*[[MathAxisAlignment]]
*[[Styling]]
*[[Linebreaking]]
*[[Unique Ids]]
*[[Help:Formula]]


:<math>\neg (P \and Q) \to (\neg P \or \neg Q)</math>
*[[Inputtypes|Inputtypes (private Wikis only)]]
:<math>\neg (P \or Q) \to (\neg P \and \neg Q)</math>
*[[Url2Image|Url2Image (private Wikis only)]]
 
==Bug reporting==
where <math>P</math>, and <math>Q</math> are propositions expressed in some formal system.
If you find any bugs, please report them at [https://bugzilla.wikimedia.org/enter_bug.cgi?product=MediaWiki%20extensions&component=Math&version=master&short_desc=Math-preview%20rendering%20problem Bugzilla], or write an email to math_bugs (at) ckurs (dot) de .
 
===Substitution form===
 
De Morgan's laws are normally shown in the compact form above, with negation of the output on the left and negation of the inputs on the right.  A clearer form for substitution can be stated as:
 
:<math>(P \and Q) \equiv \neg (\neg P \or \neg Q)</math>
:<math>(P \or Q) \equiv \neg (\neg P \and \neg Q)</math>
 
This emphasizes the need to invert both the inputs and the output, as well as change the operator, when doing a substitution.
 
=== Set theory and Boolean algebra ===
 
In set theory and [[Boolean algebra (logic)|Boolean algebra]], it is often stated as "Union and intersection interchange under complementation",<ref>''Boolean Algebra'' By R. L. Goodstein. ISBN 0-486-45894-6</ref> which can be formally expressed as:
*<math>\overline{A \cup B}\equiv\overline{A} \cap \overline{B}</math>
*<math>\overline{A \cap B}\equiv\overline{A} \cup \overline{B}</math>
 
where:
*{{overline|''A''}} is the negation of A, the [[overline]] being written above the terms to be negated
*∩ is the [[Intersection (set theory)|intersection]] operator (AND)
*∪ is the [[Union (set theory)|union]] operator (OR)
 
The generalized form is:
: <math>\overline{\bigcap_{i \in I} A_{i}}\equiv\bigcup_{i \in I} \overline{A_{i}}</math>
: <math>\overline{\bigcup_{i \in I} A_{i}}\equiv\bigcap_{i \in I} \overline{A_{i}}</math>
 
where ''I'' is some, possibly uncountable, indexing set.
 
In set notation, De Morgan's law can be remembered using the [[mnemonic]] "break the line, change the sign".<ref>[http://books.google.com/books?id=NdAjEDP5mDsC&pg=PA81&lpg=PA81&dq=break+the+line+change+the+sign&source=web&ots=BtUl4oQOja&sig=H1Wz9e6Uv_bNeSbTvN6lr3s47PQ#PPA81,M1 2000 Solved Problems in Digital Electronics] By S. P. Bali</ref>
 
=== Engineering ===
 
In [[electrical and computer engineering]], De Morgan's law is commonly written as:
: <math>\overline{A \cdot B} \equiv \overline {A} + \overline {B}</math>
: <math>\overline{A + B} \equiv \overline {A} \cdot \overline {B}</math>
 
where:
* <math> \cdot </math> is a logical AND
* <math>+</math> is a logical OR
* the {{overline|overbar}} is the logical NOT of what is underneath the overbar.
 
==History==
The law is named after [[Augustus De Morgan]] (1806–1871)<ref>''[http://www.mtsu.edu/~phys2020/Lectures/L19-L25/L3/DeMorgan/body_demorgan.html DeMorgan’s Theorems]'' at mtsu.edu</ref> who introduced a formal version of the laws to classical [[propositional logic]]. De Morgan's formulation was influenced by algebraization of logic undertaken by [[George Boole]], which later cemented De Morgan's claim to the find. Although a similar observation was made by [[Aristotle]] and was known to Greek and Medieval logicians<ref>Bocheński's ''History of Formal Logic''</ref> (in the 14th century, [[William of Ockham]] wrote down the words that would result by reading the laws out),<ref>William of Ockham, Summa Logicae, part II, sections 32 & 33.</ref> De Morgan is given credit for stating the laws formally and incorporating them into the language of logic. De Morgan's Laws can be proved easily, and may even seem trivial.<ref>[http://www.engr.iupui.edu/~orr/webpages/cpt120/mathbios/ademo.htm Augustus De Morgan (1806 -1871)] by Robert H. Orr</ref> Nonetheless, these laws are helpful in making valid inferences in proofs and deductive arguments.
 
==Informal proof==
De Morgan's theorem may be applied to the negation of a [[disjunction]] or the negation of a [[Logical conjunction|conjunction]] in all or part of a formula.
 
===Negation of a disjunction===
In the case of its application to a disjunction, consider the following claim: "it is false that either of A or B is true", which is written as:
:<math>\neg(A\lor B)</math>
In that it has been established that ''neither'' A nor B is true, then it must follow that both A is not true [[logical AND|and]] B is not true, which may be written directly as:
:<math>(\neg A)\wedge(\neg B)</math>
If either A or B ''were'' true, then the disjunction of A and B would be true, making its negation false. Presented in English, this follows the logic that "Since two things are both false, it is also false that either of them is true."
 
Working in the opposite direction, the second expression asserts that A is false and B is false (or equivalently that "not A" and "not B" are true). Knowing this, a disjunction of A and B must be false also. The negation of said disjunction must thus be true, and the result is identical to the first claim.
 
===Negation of a conjunction===
The application of De Morgan's theorem to a conjunction is very similar to its application to a disjunction both in form and rationale.  Consider the following claim: "it is false that A and B are both true", which is written as:
:<math>\neg(A\land B)</math> 
In order for this claim to be true, either or both of A or B must be false, for if they both were true, then the conjunction of A and B would be true, making its negation false. Thus, [[inclusive or|one (at least) or more]] of A and B must be false (or equivalently, one or more of "not A" and "not B" must be true). This may be written directly as:
:<math>(\neg A)\lor(\neg B)</math>
Presented in English, this follows the logic that "Since it is false that two things are both true, at least one of them must be false."
 
Working in the opposite direction again, the second expression asserts that at least one of "not A" and "not B" must be true, or equivalently that at least one of A and B must be false. Since at least one of them must be false, then their conjunction would likewise be false. Negating said conjunction thus results in a true expression, and this expression is identical to the first claim.
 
==Formal proof==
The proof that <math>(A\cap B)^c = A^c \cup B^c</math> is done by first proving that <math>(A\cap B)^c \subseteq A^c \cup B^c</math>, and then by proving that <math>A^c \cup B^c \subseteq (A\cap B)^c</math>
 
Let <math>x \in (A \cap B)^c</math>.  Then <math>x \not\in A \cap B</math>.  Because <math>A \cap B = \{y | y \in A \text{ and } y \in B\}</math>, then either <math>x \not\in A</math> or <math>x \not\in B</math>.  If <math>x \not\in A</math>, then <math>x \in A^c</math>, so then <math>x \in A^c \cup B^c</math>.  Otherwise, if <math>x \not\in B</math>, then <math>x \in B^c</math>, so <math>x \in A^c\cup B^c</math>.  Because this is true for any arbitrary <math>x \in (A\cap B)^c</math>, then <math>\forall x \in (A\cap B)^c, x \in A^c \cup B^c</math>, and so <math>(A\cap B)^c \subseteq A^c \cup B^c</math>.
 
To prove the reverse direction, assume that <math>\exists x \in A^c \cup B^c</math> such that <math>x \not\in (A\cap B)^c</math>.  Then <math>x \in A\cap B</math>.  It follows that <math>x \in A</math> and <math>x \in B</math>.  Then <math>x \not\in A^c</math> and <math>x \not\in B^c</math>.  But then <math>x \not\in A^c \cup B^c</math>, in contradiction to the hypothesis that <math>x \in A^c \cup B^c</math>.  Therefore, <math>\forall x \in A^c \cup B^c, x \in (A\cap B)^c</math>, and <math>A^c \cup B^c \subseteq (A\cap B)^c</math>.
 
Because <math>A^c \cup B^c \subseteq (A\cap B)^c</math> and <math>(A \cap B)^c \subseteq A^c \cup B^c</math>, then <math>(A\cap B)^c = A^c \cup B^c</math>, concluding the proof of De Morgan's Law.
 
The other De Morgan's Law, that <math>(A\cup B)^c = A^c \cap B^c</math>, is proven similarly.
 
==Extensions==
 
In extensions of classical propositional logic, the duality still holds (that is, to any logical operator we can always find its dual), since in the presence of the identities governing negation, one may always introduce an operator that is the De Morgan dual of another.  This leads to an important property of logics based on classical logic, namely the existence of [[negation normal form]]s: any formula is equivalent to another formula where negations only occur applied to the non-logical atoms of the formula.  The existence of negation normal forms drives many applications, for example in [[digital circuit]] design, where it is used to manipulate the types of [[logic gate]]s, and in formal logic, where it is a prerequisite for finding the [[conjunctive normal form]] and [[disjunctive normal form]] of a formula.  Computer programmers use them to simplify or properly negate complicated [[Conditional (programming)|logical conditions]]. They are also often useful in computations in elementary [[probability theory]].
 
Let us define the dual of any propositional operator P(''p'', ''q'', ...) depending on elementary propositions ''p'', ''q'', ... to be the operator <math>\mbox{P}^d</math> defined by
 
:<math>\mbox{P}^d(p, q, ...) = \neg P(\neg p, \neg q, \dots).</math>
 
This idea can be generalised to quantifiers, so for example the [[universal quantifier]] and [[existential quantifier]] are duals:
 
:<math> \forall x \, P(x) \equiv \neg \exists x \, \neg P(x), </math>
 
:<math> \exists x \, P(x) \equiv \neg \forall x \, \neg P(x). </math>
 
To relate these quantifier dualities to the De Morgan laws, set up a [[model theory|model]] with some small number of elements in its domain ''D'', such as
 
:''D'' = {''a'', ''b'', ''c''}.
 
Then
 
:<math> \forall x \, P(x) \equiv P(a) \land P(b) \land P(c) </math>
 
and
 
:<math> \exists x \, P(x) \equiv P(a) \lor P(b) \lor P(c).\, </math>
 
But, using De Morgan's laws,
 
:<math> P(a) \land P(b) \land P(c) \equiv \neg (\neg P(a) \lor \neg P(b) \lor \neg P(c)) </math>
 
and
 
:<math> P(a) \lor P(b) \lor P(c) \equiv \neg (\neg P(a) \land \neg P(b) \land \neg P(c)), </math>
 
verifying the quantifier dualities in the model.
 
Then, the quantifier dualities can be extended further to [[modal logic]], relating the box ("necessarily") and diamond ("possibly") operators:
 
:<math> \Box p \equiv \neg \Diamond \neg p, </math>
:<math> \Diamond p \equiv \neg \Box \neg p.\, </math>
 
In its application to the [[Subjunctive possibility|alethic modalities]] of possibility and necessity, [[Aristotle]] observed this case, and in the case of [[normal modal logic]], the relationship of these modal operators to the quantification can be understood by setting up models using [[Kripke semantics]].
 
==See also==
* [[Isomorphism]] (NOT operator as isomorphism between [[wikt:positive logic|positive logic]] and [[wikt:negative logic|negative logic]])
* [[List of Boolean algebra topics]]
 
==References==
{{reflist}}
 
==External links==
* {{springer|title=Duality principle|id=p/d034130}}
* {{MathWorld | urlname=deMorgansLaws | title=de Morgan's Laws}}
* {{PlanetMath | urlname=DeMorgansLaws | title=de Morgan's laws | id=2308}}
 
{{Set theory}}
[[Category:Boolean algebra]]
[[Category:Duality theories]]
[[Category:Rules of inference]]
[[Category:Articles containing proofs]]
[[Category:Theorems in propositional logic]]

Latest revision as of 22:52, 15 September 2019

This is a preview for the new MathML rendering mode (with SVG fallback), which is availble in production for registered users.

If you would like use the MathML rendering mode, you need a wikipedia user account that can be registered here [[1]]

  • Only registered users will be able to execute this rendering mode.
  • Note: you need not enter a email address (nor any other private information). Please do not use a password that you use elsewhere.

Registered users will be able to choose between the following three rendering modes:

MathML

E=mc2


Follow this link to change your Math rendering settings. You can also add a Custom CSS to force the MathML/SVG rendering or select different font families. See these examples.

Demos

Here are some demos:


Test pages

To test the MathML, PNG, and source rendering modes, please go to one of the following test pages:

Bug reporting

If you find any bugs, please report them at Bugzilla, or write an email to math_bugs (at) ckurs (dot) de .