ABL(1)
π ABL(1) β the abl page, bestie edition π
okay so this is abl, a page from the cao-vlsi reference manual, and it's literally all about prefixed representation for boolean functions. yes we're doing boolean algebra today. slay. π§β¨
πΈ NAME πΈ
abl β prefixed representation for boolean functions. that's it, that's the whole vibe. π
π¦ ORIGIN π¦
this software belongs to the ALLIANCE CAD SYSTEM, built by the ASIM team at the LIP6 laboratory of UniversitΓ© Pierre et Marie CURIE, in Paris, France. π«π·β¨
- Web:
http://asim.lip6.fr/recherche/alliance/ - E-mail:
alliance-users@asim.lip6.fr
like they really said "we're in Paris and we do CAD" and honestly? iconic. π
β¨ DESCRIPTION β¨
libablmmm.a is a library that lets you represent a boolean function in a LISP-like form. an ABL is a prefixed internal representation for a boolean function that has the standard operators β OR, NOR, NAND, XOR, NOT and AND. π₯
an ABL is only made up of doublets. a doublet is composed of two fields, and you get to them through the functionnal #define CAR and CDR. a doublet is implemented with a MBK chain_list. (iykyk)
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'" or "'1'" 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 through the arguments by calling the functionnal #define CDR. then each argument is accessible by the functionnal #define 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. π
functions are divided into two groups: the low level functions are written with #define and are used to manage the ABL internal form, and the high level functions are used to manage the boolean expressions. all functions are defined in the file "prefbib.c" (#define in "logmmm.h"). β
π§ Functionnal #define π§
ATOMβ checks the kind of an expression (atomic or operator expression).CARβ returns theDATApointer of a doublet.CADRβ returns theDATApointer of theNEXTpointer of a doublet.CDRβ returns theNEXTpointer of a doublet.OPERβ returns the operator number of an operator expression.VALUE_ATOMβ returns the associatedchar *of an atomic expression.
π«Ά Functions and procedures π«Ά
okay bestie this is the big list, drink some water first π§
addHExprβ adds a new arguments at the head of an operator expression.addQExprβ adds a new arguments at the queue of an operator expression.anyExprβ returns the value of a logicalORapplied on the results of the application of a function on the arguments of an operator expression.changeOperExprβ changes the operator of the head of an expression.charToOperβ converts an operator string into an operator number.copyExprβ copies an expression.createAtomβ creates an atomic expression.createBinExprβ creates a binary operator expression with an eventual merging of the operator.createExprβ creates the head of an operator expression.deleteNumExprβ removes the i-th argument in an operator expression.devXor2Exprβ convertsXOR 2toOR-AND.devXorExprβ removesXORin an expression.displayExprβ displays an expression in a prefixed notation.displayInfExprβ displays an expression in infixed notation.equalExprβ checks that two expressions are strictly equal.equalVarExprβ checks that two expressions are syntactically equal.everyExprβ returns the value of a logicalANDapplied on the results of the application of a function on the arguments of an operator expression.exprToCharβ converts an expression into a string.charToExprβ converts a string into an expression.flatArityExprβ flattens the operators of an expression.flatPolarityExprβ translates the inverters of an expression to the level of atomic expressions.freeExprβ frees an expression.identExprβ gives an identifier from an operator expression.lengthExprβ returns the number of arguments in an expression.mapCarExprβ creates a new expression by applying a function to all arguments of an operator expression.mapExprβ applies a procedure to all the arguments of an operator expression.maxExprβ returns the highest argument of an operator expression.minExprβ returns the lowest argument of an operator expression.normExprβ normalizes an expression.notExprβ complements an expression and eventually does a simplification.numberAtomExprβ returns the number of atoms in an expression.numberOccExprβ returns the number of time an atom appears in an expression.numberOperBinExprβ returns the number of equivalent binary operators in an expression.operToCharβ converts an operator number into an operator string.profExprβ returns the depth of an expression.profAOExprβ returns the depth of an expression without taking the inverters into account.searchExprβ searches for a specific atom in an expression.searchNumExprβ fetches the i-th argument in an operator expression.searchOperExprβ searches for an operator in an expression.simplif10Exprβ makes simplifications on an expression including constant atomic expressions.simplifNotExprβ makes simplifications on an expression including inverters.sortExprβ sorts an expression.substExprβ copies an expression by substituting a given atom by an expression.substPhyExprβ substitutes an atomic expression by an expression within an expression.supportChain_listExprβ returns the support of an expression in achain_list.supportPtype_listExprβ returns the support of an expression in aptype_list.wPMExprβ returns1if the pattern matching is possible between two expressions.
π SEE ALSO π
log(1), mbk(1), addHExpr(3), addQExpr(3), anyExpr(3), changeOperExpr(3), charToExpr(3), charToOper(3), copyExpr(3), createAtom(3), createBinExpr(3), createExpr(3), deleteNumExpr(3), devXor2Expr(3), devXorExpr(3), displayExpr(3), displayInfExpr(3), equalExpr(3), equalVarExpr(3), everyExpr(3), exprToChar(3), flatArityExpr(3), flatPolarityExpr(3), freeExpr(3), identExpr(3), lengthExpr(3), mapCarExpr(3), mapExpr(3), maxExpr(3), minExpr(3), notExpr(3), normExpr(3), numberAtomExpr(3), numberOccExpr(3), numberOperBinExpr(3), operToChar(3), profExpr(3), profAOExpr(3), searchExpr(3), searchNumExpr(3), searchOperExpr(3), simplif10Expr(3), simplifNotExpr(3), sortExpr(3), substExpr(3), substPhyExpr(3), supportChain_listExpr(3), supportPtype_listExpr(3). PMExpr(3).
π BUG REPORT π
this tool is under development at the ASIM department of the LIP6 laboratory. π·βοΈ
we need your feedback to improve documentation and tools. fr fr, please tell them. π₯Ίπ¬
ASIM/LIP6 Β· October 1, 1997 β yeah this page is a lil vintage bestie, born back in 1997 and still serving π thanks for reading all the way to the bottom, you're the main character. ππ¦β¨
π¦ where this page comes from
- fedora 43: alliance 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 43: alliance 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- fedora 44: alliance 5.1.1-35.20160506gitd8c05cd.fc42 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms