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"

Jump to: navigation, search

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)