[BACK]Return to al.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / include

Annotation of OpenXM_contrib2/asir2000/include/al.h, Revision 1.1.1.1

1.1       noro        1: /* $OpenXM: OpenXM/src/asir99/include/al.h,v 1.1.1.1 1999/11/10 08:12:30 noro Exp $ */
                      2: /* ----------------------------------------------------------------------
                      3:    $Id: al.h,v 1.2 1998/12/08 16:23:05 sturm Exp $
                      4:    ----------------------------------------------------------------------
                      5:    File al.h: Real quantifier elimination code for RISA/ASIR
                      6:
                      7:    Copyright (c) 1996, 1997, 1998 by
                      8:    Andreas Dolzmann and Thomas Sturm, University of Passau, Germany
                      9:    dolzmann@uni-passau.de, sturm@uni-passau.de
                     10:    ----------------------------------------------------------------------
                     11: */
                     12:
                     13: /* Operator bitstrings: (qua, junct, bin, uni, atomic, x1, x2, x3)
                     14:    where x1, x3, x3 are
                     15:    atomic: direction, strict, order
                     16:    uni: -, -, -
                     17:    bin: direction, -, order
                     18:    junct: conjunctive, conjunctive, -
                     19:    qua: conjunctive, conjunctive, - */
                     20:
                     21: #define AL_TRUE 0x00
                     22: #define AL_FALSE 0x06
                     23: #define AL_EX 0x80
                     24: #define AL_ALL 0x86
                     25: #define AL_OR 0x40
                     26: #define AL_AND 0x46
                     27: #define AL_NOT 0x10
                     28: #define AL_IMPL 0x25
                     29: #define AL_REPL 0x21
                     30: #define AL_EQUIV 0x20
                     31:
                     32: #define AL_EQUAL 0x08
                     33: #define AL_NEQ 0x0E
                     34: #define AL_LESSP 0x0B
                     35: #define AL_GREATERP 0x0F
                     36: #define AL_LEQ 0x09
                     37: #define AL_GEQ 0x0D
                     38:
                     39: #define AL_QUANT(op) ((op) & 0x80)
                     40: #define AL_JUNCT(op) ((op) & 0x40)
                     41: #define AL_TVAL(op) (!((op) & 0xF9))
                     42: #define AL_UNI(op) ((op) & 0x10)
                     43: #define AL_EXT(op) ((op) & 0x20)
                     44: #define AL_ATOMIC(op) ((op) & 0x08)
                     45: #define AL_ORDER(op) ((op) & 0x01)
                     46: #define AL_ANEGREL(r) ((r) ^ 0x04)
                     47: #define AL_ANEGJUNCT(r) ((r) ^ 0x06)
                     48: #define AL_NEUTRAL(j) ((j) ^ 0x46)
                     49: #define AL_OMNIPOT(j) ((j) & 0x06)
                     50:
                     51: #define AL_MKSTRICT(op) ((op) | 0x02)
                     52: #define AL_LNEGOP(op) ((op) ^ 0x06)
                     53:
                     54: /* Formal lower bound: AL_GREATERP or AL_GEQ */
                     55: #define AL_FLB(rel) (rel == AL_GREATERP || rel == AL_GEQ)
                     56:
                     57: /* Transcendent substitution expansion:
                     58:    AL_EQUAL -> AL_AND, AL_NEQ -> AL_OR, used by subtrans_a_no */
                     59: #define AL_TRSUBEXP(no) ((no) ^ 0x4E)
                     60:
                     61:
                     62: /* Public Data Structures */
                     63:
                     64: /* #define O_F 14; defined in ca.h */
                     65:
                     66: #define LBFLB(x) ((x)->label)
                     67: #define LBFF(x) ((x)->formula)
                     68:
                     69: #define FOP(x) ((x)->op)
                     70:
                     71: #define FPL(x) ((x)->arg.faarg)
                     72: #define FARG(x) ((x)->arg.fuarg)
                     73: #define FJARG(x) ((x)->arg.fjarg)
                     74:
                     75: #define FBARG(x) ((x)->arg.fbarg)
                     76: #define FQARG(x) ((x)->arg.fqarg)
                     77:
                     78: #define FLHS(x) (FBARG(x)->lhs)
                     79: #define FRHS(x) (FBARG(x)->rhs)
                     80: #define FQVR(x) VR(FQARG(x))
                     81: #define MAT(x) ((x)->mat)
                     82: #define FQMAT(x) MAT(FQARG(x))
                     83:
                     84: #define NEWLBF(l) ((l)=(LBF)MALLOC(sizeof(struct oLBF)))
                     85: #define NEWF(f) ((f)=(F)MALLOC(sizeof(struct oF)),OID(f)=O_F)
                     86: #define NEWFQARG(x) ((x)=(FQARG)MALLOC(sizeof(struct oFQARG)))
                     87: #define NEWFBARG(x) ((x)=(FBARG)MALLOC(sizeof(struct oFBARG)))
                     88:
                     89: #define MKLBF(x,f,l) (NEWLBF(x),LBFF(x)=f,LBFLB(x)=l)
                     90: #define MKTV(f,tv) (NEWF(f),FOP(f)=tv,(f)->arg.dummy=0)
                     91: #define MKAF(f,r,p) (NEWF(f),FOP(f)=r,FPL(f)=p)
                     92: #define MKUF(f,op,arg) (NEWF(f),FOP(f)=op,FARG(f)=arg)
                     93: #define MKBF(f,op,lhs,rhs) \
                     94: (NEWF(f),FOP(f)=op,NEWFBARG(FBARG(f)),FLHS(f)=lhs,FRHS(f)=rhs)
                     95: #define MKJF(f,j,argl) (NEWF(f),FOP(f)=j,FJARG(f)=argl)
                     96: #define MKQF(f,q,var,m) \
                     97: (NEWF(f),FOP(f)=q,NEWFQARG(FQARG(f)),FQVR(f)=var,FQMAT(f)=m)
                     98:
                     99: typedef unsigned int oFOP;
                    100:
                    101: struct oF {
                    102:    short id;
                    103:    oFOP op;
                    104:    union {
                    105:       void *dummy;
                    106:       P faarg;
                    107:       struct oF *fuarg;
                    108:       struct oFBARG *fbarg;
                    109:       NODE fjarg;
                    110:       struct oFQARG *fqarg;
                    111:    } arg;
                    112: };
                    113:
                    114: typedef struct oF *F;
                    115:
                    116: struct oFBARG {
                    117:    F lhs;
                    118:    F rhs;
                    119: };
                    120:
                    121: typedef struct oFBARG *FBARG;
                    122:
                    123: struct oFQARG {
                    124:   V v;
                    125:   F mat;
                    126: };
                    127:
                    128: typedef struct oFQARG *FQARG;
                    129:
                    130: struct oLBF {
                    131:   F formula;
                    132:   int label;
                    133: };
                    134:
                    135: typedef struct oLBF *LBF;
                    136:
                    137: extern F F_TRUE;
                    138: extern F F_FALSE;
                    139:

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>