ABL101(1)

NAME
abl - Prefixed representation for boolean functions

DESCRIPTION
abl is a library that enables to represent a boolean function in a LISP-like form. An ABL is a prefixed representation for a boolean function having standard operators as ABL_NOT, ABL_AND, ABL_OR, ABL_XOR, ABL_NAND, ABL_NOR, ABL_NXOR and CTL operators as ABL_AF, ABL_AG, ABL_AX, ABL_AU, ABL_EF, ABL_EG, ABL_EX and ABL_EU. An ABL is only made up of doublets. A doublet is composed of two fields wich are accessible by ABL_CAR and ABL_CDR macro-functions. A doublet is implemented with a mbk chain_list. "Expression" is the generic term for a boolean function represented by an ABL. An expression can be an atomic expression or an operator expression. The function f = a is represented by an atomic expression whereas f = (or a b) is represented by an operator expression. An atomic expression is made up of a single doublet having the NEXT pointer equal to NULL and DATA pointer equal to the identifier pointer. A constant atomic expression is an atomic expression having the string "'0'", "'1'" or "'d'" as identifier. An operator expression is more complicated than an atomic expression. It's a list of items, the first item is the head operator of the expression and the following items are the arguments of the expression. It's possible to go trough the arguments by calling ABL_CDR. Then each argument is accessible by ABL_CAR. An argument can be recursively an atomic or an operator expression. The arity of an operator expression is the number of arguments of the first level.

Macro-functions :

ABL_CDR( E )
    - gives the NEXT field of a chain_list.

ABL_CAR( E )
    - gives the DATA field of a chain_list.

ABL_CADR( E )
    - gives the NEXT->DATA field.

ABL_CDDR( E )
    - gives the NEXT->NEXT field.

ABL_ATOM( E )
    - True if the expression is atomic.

ABL_ATOM_VALUE( E )
    - Value of an atom in an expression.

ABL_OPER( E )
    - Operator number in an expression.

Functions :

addablqexpr
    - appends an expression to another one.

addablhexpr
    - adds an expression in the head of another one.

createablatom
    - creates an atomic expression.

createabloper
    - creates a the head of an operator expression.

createablbinexpr
    - creates a binary expression.

createablnotexpr
    - complements an expression.

createablxorbinexpr
    - creates an 'xor' or 'xnor' operator expression.

createablunaryexpr
    - creates an unary expression.

delablexpr
    - deletes an expression.

delablexprnum
    - deletes a specified operand.

devdupablxorexpr
    - duplicates and develops 'xor', 'nxor'.

devablxorexpr
    - develops 'xor', 'xnor'.

dupablexpr
    - duplicates an expression.

flatablexpr
    - merges the operators of an expression.

freeablexpr
    - deletes an expression.

getablopername
    - gives the name of an operator number.

getabloperuppername
    - gives the upper name of an operator number.

getabloperpolar
    - gives the polarity of an operator.

getablopernot
    - gives the complement of an operator.

getabloperbyname
    - gives the operator number using a name.

getablatomone
    - gives the name "'1'"

getablatomzero
    - gives the name "'0'"

getablatomdc
    - gives the name "'d'"

getablexprdepth
    - returns the depth of an expression.

getablexprlength
    - returns the length of an expression.

getablexprnumatom
    - returns the number of atom in an expression.

getablexprnumbinoper
    - returns the number of binary operator.

getablexprsupport
    - gives the support of an expression.

getablexprnumocc
    - gives the number of occurent of a name.

getablexprmax
    - applies a maximum cost function.

getablexprmin
    - applies a minimum cost function.

getablexprnum
    - returns a specified operand.

initablatomname
    - initialize atom static name.

initablopername
    - initialize operator static name.

initabloperbinary
    - sets the binary operator mode on.

initablname
    - initialize all the static names.

isablunaryoper
    - tests if an operator is unary.

isablbinaryoper
    - tests if an operator is binary.

isabloperinexpr
    - tests if an oper appears in an expression.

isablnameinexpr
    - tests if a name appears in an expression.

isablequalexpr
    - tests if two expressions are equals.

isablsimilarexpr
    - tests if two expressions are similars.

mapablexpr
    - applies a function to the operand's expression.

mapabloperexpr
    - applies a function to the operand's expression.

mapablanyexpr
    - applies a function to the operand's expression.

mapableveryexpr
    - applies a function to the operand's expression.

polardupablexpr
    - moves and duplicates inverters to the atomic level.

polarablexpr
    - moves inverters to the atomic level.

simpdupablexpr
    - duplicates and simplifies an expression.

simpablexpr
    - simplifies an expression.

strablexpr
    - parses a prefixed string an creates expression.

substablexpr
    - substitutes an expression in another one.

substdupablexpr
    - duplicates and substitutes an expression in another one.

unflatablexpr
    - unflats the operators of an expression.

vhdlablname
    - returns a compatible VHDL name.

vhdlablvector
    - gives the index and the name of a vector.

viewablexprfile
    - displays an expression in a file.

viewablexpr
    - displays an expression.

viewablexprstr
    - displays an expression in a string.

libAbl101.a :
    addablqexpr, addablhexpr, createablatom, createabloper, createablbinexpr, createablnotexpr, createablxorbinexpr, createablunaryexpr, normablctlexpr, simpablctlexpr, delablexpr, delablexprnum, devdupablxorexpr, devablxorexpr, dupablexpr, flatablexpr, freeablexpr, getablopername, getabloperuppername, getabloperpolar, getablopernot, getabloperbyname, getablatomone, getablatomzero, getablatomdc, getablexprdepth, getablexprlength, getablexprnumatom, getablexprnumbinoper, getablexprsupport, getablexprnumocc, getablexprmax, getablexprmin, getablexprnum, initablatomname, initablopername, initabloperbinary, initablname, isablunaryoper, isablbinaryoper, isabloperinexpr, isablnameinexpr, isablequalexpr, isablsimilarexpr, mapablexpr, mapabloperexpr, mapablanyexpr, mapableveryexpr, polardupablexpr, polarablexpr, simpdupexpr, simpdupablexpr, simpablexpr, strablexpr, substablexpr, substdupablexpr, unflatablexpr, vhdlablname, vhdlablvector, viewablexprfile, viewablexpr, viewablexprstr.

SEE ALSO
mbk(1), aut(1).