As the first step in the decommissioning of sasCommunity.org the site has been converted to read-only mode.


Here are some tips for How to share your SAS knowledge with your professional network.


Difference between revisions of "Truth Table"

From sasCommunity
Jump to: navigation, search
m (References added Cat: Bricolage)
m (References added Fehd.2016 True is not false)
Line 89: Line 89:
 
== References ==
 
== References ==
  
* DeMorgan's Laws
+
* De Morgan's Laws: nand and nor
** Electrical Engineers: http://www.allaboutcircuits.com/vol_4/chpt_7/8.html
+
** [http://www.allaboutcircuits.com/vol_4/chpt_7/8.html| Electrical Engineers]
** Logicians: http://lc.brooklyn.cuny.edu/LeftBarFiles/FromAboutLC/Core5Files/Logic/demorg.html
+
** [http://lc.brooklyn.cuny.edu/LeftBarFiles/FromAboutLC/Core5Files/Logic/demorg.html| Logicians]
** Philosphers: http://matcmadison.edu/alehnen/weblogic/logproof.htm
+
** [http://matcmadison.edu/alehnen/weblogic/logproof.htm| Philosphers]
* True or False: Evaluating Logical Expressions
+
* Fehd
** Ronald J. Fehd
+
** 2009 [http://analytics.ncsu.edu/sesug/2009/CC013.Fehd.pdf| True or False: Evaluating Logical Expressions]
** http://analytics.ncsu.edu/sesug/2009/CC013.Fehd.pdf
+
** 2016 [http://www.lexjansen.com/sesug/2016/BB-186.pdf| True is not False: Evaluating Logical Expressions]
* Fuzzy Logic: ternary (trinary) values
+
* [https://en.wikipedia.org/wiki/Fuzzy_logic| Fuzzy Logic: ternary (trinary) values]
 
+
  
 
-- created by [[User:Rjf2]] 10:26, 20 August 2007 (EDT)
 
-- created by [[User:Rjf2]] 10:26, 20 August 2007 (EDT)

Revision as of 10:54, 31 August 2017

Author: Ronald_J._Fehd

Truth Table

This program shows how to write statements which implement the following types of logic:

  • boolean, binary-valued: in (0,1)
  • DeMorgan's Laws
  • fuzzy  : in (0,0.5,1)
  • trinary: in (.,0,1)
 /*name    : TruthTable
description: make data set of values and logical combinations
purpose    : illustrate binary and trinary logical evaluation
RJF2 2003May27
DeMorgan's Laws:
~(p ^ q) <=> ~p v ~q
~(p v q) <=> ~p ^ ~q
tilde ~ :: not
caret ^ :: and
      v :: or
    <=> :: is equivalent to
not (p and q) <=> not p or  not q
not (p  or q) <=> not p and not q
*** ................................. */
%Let ProgName = TruthTable;
 
%Let List = .,0    ,1;
%Let List =   0,0.5,1;
%Let List =   0    ,1;
 
Title "&Progname. with P and Q in (&List.)";
 
PROC  Format;
value TF . = 'NA'
         0 = 'F'
         1 = 'T'
     other = '?';*between zero and one;
 
DATA   Truth_Table;
length default = 4;
label  P      = 'P'
       Q      = 'Q'
       notP   = 'not P'
       and    = 'and(P,Q)'
       or     = 'or(P,Q)'
       bxor   = 'bxor(P,Q)'
       xor1   = 'xor(P,Q)'
       xor2   = 'xor(P,Q)'
       xor3   = 'xor2 no parens'
       DeM1a  = 'not( and(P,Q) )'
       DeM1b  = 'notP or notQ'
       DeM2a  = 'not( or(P,Q) )'
       DeM2b  = 'notP and notQ'
       FLmin  = 'fuzzy logic and min(P,Q)'
       FLmax  = 'fuzzy logic or max(P,Q)'
       FLnotP = 'fuzzy logic not 1 - P'
       ;
format _numeric_ TF.;
 
do    P = &List.;
   do Q = &List.;
      notP   = not P;
      and    = P and Q;
      or     = P or  Q;
      bxor   = bxor(P,Q);
      xor1   = P and not Q or not P and Q;
      xor2   = not(P and Q) and not(not P and not Q);
      xor3   = not P and Q  and not not P and not Q ;
      DeM1a  = not(P and Q);
      DeM1b  = not P or not Q;
      DeM2a  = not(P or Q);
      DeM2b  = not P and not Q;
      FLmin  = min(P,Q);
      FLmax  = max(P,Q);
      FLnotP = 1 - P;
      output;
      end;*do Q;
   end;   *do P;
stop;
run;
 
PROC Print data = Truth_Table
                  label noobs;
run;

References

-- created by User:Rjf2 10:26, 20 August 2007 (EDT)

--Ronald_J._Fehd macro.maven == the radical programmer