[Date Index] [Thread Index] [Author Index]
Re: No Biconditional?
On 5 Nov 2005, at 15:52, Steven T. Hatton wrote: > I guess, technically, Equal will provide all the functionality that a > biconditional operator would provide. I'm a bit surprised that, so > far as > I can see, there is no biconditional in a form typically used in > symbolic > logic. I will grant that the traditional symbols are problematic > in more > ways than one. For example, <=> is sometimes used to denote > definition, > and <-> is used to denote a biconditional relation. In the > contexts where > <-> is used, -> would be used as a conditional. Unfortunately for > purists > of symbolic logic, -> has been dedicated to other purposes in > Mathematica. > Is there any convention for denoting a biconditional relation in the > context of electronic documents? That is, in the sense of symbolic > logic. > > I see the <-> is available, as is <=>, but, if my observations are > correct > <=> has the wrong precedence. For example in > (P \[And] Q) \[DoubleLeftRightArrow] \[Not] P \[Or] \[Not] Q, > \[DoubleLeftRightArrow] binds more tightly than \[Or] resulting in: > Or[Not[DoubleLeftRightArrow[And[P, Q], Not[P]]], Not[Q]]. There > appears to > be a way to change the precedence of operators, but I don't know > how to > determine what precedence I should give an operator whose behavior I > define. Should I simply use == and suffer the indignation? > -- > "Philosophy is written in this grand book, The Universe. ... But > the book > cannot be understood unless one first learns to comprehend the > language... > in which it is written. It is written in the language of > mathematics, ...; > without which wanders about in a dark labyrinth." The Lion of Gaul > From your post I am not sure if you are aware that Mathematica has a built in function Implies and that Implies[p,q] is rendered in TraditionalForm as is usual in symbolic logic. If you wish you can define Equivalent[p_, q_] := And[Implies[p, q], Implies[q, p]] and then do things like: In:= FullSimplify[Equivalent[p && (q || r), (p && q) || (p && r)]] Out= True Furthermore, you could try to use the Notation package to make <=> mean Equivalent. (However, I would never do so since I hold a deep grudge against the Notation package, which currently totally refuses to work on my system. I do not even wish to try to find out why!) Andrzej Kozlowski