Nice work. I really like the work you are doing. Is that code in your github repo?
Tim >>> Also, in src/algebra/Makefile.pamphlet there are "layerpic" chunks >>> which encode the graphviz graph for all of the algebra. Extracting >>> layerpic will create the associated graphviz dot file. >> >>Oh no... I don't want that. I want the result, but not code a .dot file >>by hand. That's unmaintainable. >> >>I rather think of giving the name of a constructor and have the >>respective .dot-file for *this* specific constructor produced by some >>program from the data I get via GETDATABASE. > > > > > >Some of what you need exists. There is a new command > > )describe [category | domain | package ] <name> [ | internal ] > >You can ask for the comments from the algebra source code >which are contained in the Description: section at the top >of each Category, Domain, or Package. > >You can type > > )help describe for the man page > >Details for writing the Description: section for new algebra code >are in Volume 2 (User Guide) > >For example, > >(1) -> )describe domain AlgebraGivenByStructuralConstants > >AlgebraGivenByStructuralConstants implements finite rank algebras >over a commutative ring, given by the structural constants gamma with >respect to a fixed basis [a1,..,an], where gamma is an n-vector of n >by n matrices [(gammaijk) for k in 1..rank()] defined by ai * aj = >gammaij1 * a1 + ... + gammaijn * an. The symbols for the fixed basis >have to be given as a list of symbols. > >You can also ask for a very detailed description of the internal >structure (only for Domains and Packages). For instance: > >(1) -> )describe domain AlgebraGivenByStructuralConstants internal >----------------Template----------------- > 5 lazy DirectProduct(local #2,local #1) > 6 lazy local #1 > 7 lazy local #2 > 8 lazy local #3 > 9 lazy local #4 > 10 lazy QUOTE Rep > 11 lazy Union($,QUOTE failed) > 12 lazy FiniteRankNonAssociativeAlgebra&($$,local #1) > 13 latch recip : % -> Union(%,QUOTE failed) from >FiniteRankNonAssociativeAlgebra&($$,local #1) > 14 fun ALGSC;recip;$U;1 > 15 lazy Matrix local #1 > 16 lazy SquareMatrix(local #2,local #1) > 17 latch coerce : % -> Matrix local #1 from SquareMatrix(local #2,local #1) > 18 latch apply : (Matrix local #1,%) -> % from % > 19 fun ALGSC;*;Sm2$;2 > 20 lazy Vector local #1 > 21 latch directProduct : Vector local #1 -> % from QUOTE Rep > 22 fun ALGSC;coerce;V$;3 > 23 lazy Vector Matrix local #1 > 24 fun ALGSC;structuralConstants;V;4 > 25 lazy List local #1 > 26 latch entries : % -> List local #1 from QUOTE Rep > 27 latch vector : List local #1 -> % from Vector local #1 > 28 fun ALGSC;coordinates;$V;5 > 29 lazy Integer > 30 lazy Vector $$ > 31 latch maxIndex : % -> Integer from Vector $$ > 32 latch 0 : () -> % from local #1 > 33 lazy NonNegativeInteger > 34 latch new : (NonNegativeInteger,NonNegativeInteger,local #1) -> % >from Matrix local #1 > 35 latch elt : (%,Integer) -> $$ from Vector $$ > 36 latch setColumn! : (%,Integer,Vector local #1) -> % from Matrix local #1 > 37 lazy Union(Vector local #1,QUOTE failed) > 38 lazy Record(particular: Union(Vector local #1,QUOTE failed),basis: >List Vector local #1) > 39 lazy LinearSystemMatrixPackage(local #1,Vector local #1,Vector local >#1,Matrix local #1) > 40 latch solve : (Matrix local #1,Vector local #1) -> >Record(particular: Union(Vector local #1,QUOTE failed),basis: List >Vector local #1) from LinearSystemMatrixPackage(local #1,Vector local >#1,Vector local #1,Matrix local #1) > 41 lazy Boolean > 42 latch zero? : % -> Boolean from local #1 > 43 lazy Vector $ > 44 fun ALGSC;basis;V;7 > 45 lazy (local #1 -> Boolean) > 46 latch every? : ((local #1 -> Boolean),%) -> Boolean from Vector local #1 > 47 fun ALGSC;coordinates;$VV;6 > 48 lazy PositiveInteger > 49 latch unitVector : PositiveInteger -> % from QUOTE Rep > 50 fun ALGSC;someBasis;V;8 > 51 fun ALGSC;rank;Pi;9 > 52 latch elt : (%,Integer) -> local #1 from QUOTE Rep > 53 fun ALGSC;elt;$IR;10 > 54 latch zero? : % -> Boolean from QUOTE Rep > 55 lazy OutputForm > 56 latch coerce : % -> OutputForm from local #1 > 57 latch 1 : () -> % from local #1 > 58 latch ?=? : (%,%) -> Boolean from local #1 > 59 lazy Symbol > 60 lazy List Symbol > 61 latch elt : (%,Integer) -> Symbol from List Symbol > 62 latch coerce : % -> OutputForm from Symbol > 63 latch ?*? : (%,%) -> % from OutputForm > 64 latch ?+? : (%,%) -> % from OutputForm > 65 lazy ((OutputForm,OutputForm) -> OutputForm) > 66 lazy List OutputForm > 67 latch reduce : (((OutputForm,OutputForm) -> OutputForm),%) -> >OutputForm from List OutputForm > 68 fun ALGSC;coerce;$Of;11 > 69 latch new : (NonNegativeInteger,local #1) -> % from Vector local #1 > 70 latch ?*? : (%,%) -> % from local #1 > 71 latch elt : (%,Integer) -> Matrix local #1 from Vector Matrix local #1 > 72 latch elt : (%,Integer,Integer) -> local #1 from Matrix local #1 > 73 latch ?+? : (%,%) -> % from local #1 > 74 latch setelt : (%,Integer,local #1) -> local #1 from Vector local #1 > 75 fun ALGSC;*;3$;12 > 76 latch ?-? : (%,%) -> % from local #1 > 77 lazy Void > 78 lazy String > 79 latch messagePrint : String -> Void from OutputForm > 80 fun ALGSC;alternative?;B;13 > 81 fun ALGSC;associative?;B;14 > 82 fun ALGSC;antiAssociative?;B;15 > 83 fun ALGSC;commutative?;B;16 > 84 fun ALGSC;antiCommutative?;B;17 > 85 fun ALGSC;leftAlternative?;B;18 > 86 fun ALGSC;rightAlternative?;B;19 > 87 fun ALGSC;flexible?;B;20 > 88 fun ALGSC;lieAdmissible?;B;21 > 89 latch ?*? : (PositiveInteger,%) -> % from local #1 > 90 latch recip : % -> Union(%,QUOTE failed) from local #1 > 91 fun ALGSC;jordanAdmissible?;B;22 > 92 fun ALGSC;jordanAlgebra?;B;23 > 93 fun ALGSC;jacobiIdentity?;B;24 > 94 lazy SparseUnivariatePolynomial Polynomial local #1 > 95 lazy Record(particular: $,basis: List $) > 96 lazy Union(Record(particular: $,basis: List $),QUOTE failed) > 97 lazy SparseUnivariatePolynomial local #1 > 98 lazy List Vector local #1 > 99 lazy List Polynomial local #1 > 100 lazy SingleInteger >----------Complete Ops---------------- > ?~=? : (%,%) -> Boolean missing > zero? : % -> Boolean missing > unit : () -> Union(%,QUOTE failed) missing if #1 has IntegralDomain > subtractIfCan : (%,%) -> Union(%,QUOTE failed) missing > structuralConstants : () -> Vector Matrix local #1 >ALGSC;structuralConstants;V;4 > structuralConstants : Vector % -> Vector Matrix local #1 missing > someBasis : () -> Vector % ALGSC;someBasis;V;8 > sample : () -> % missing > rightUnits : () -> Union(Record(particular: %,basis: List %),QUOTE >failed) missing if #1 has IntegralDomain > rightUnit : () -> Union(%,QUOTE failed) missing if #1 has IntegralDomain > rightTraceMatrix : () -> Matrix local #1 missing > rightTraceMatrix : Vector % -> Matrix local #1 missing > rightTrace : % -> local #1 missing > rightRegularRepresentation : % -> Matrix local #1 missing > rightRegularRepresentation : (%,Vector %) -> Matrix local #1 missing > rightRecip : % -> Union(%,QUOTE failed) missing if #1 has IntegralDomain > rightRankPolynomial : () -> SparseUnivariatePolynomial Polynomial local >#1 missing if #1 has Field > rightPower : (%,PositiveInteger) -> % missing > rightNorm : % -> local #1 missing > rightMinimalPolynomial : % -> SparseUnivariatePolynomial local #1 >missing if #1 has IntegralDomain > rightDiscriminant : () -> local #1 missing > rightDiscriminant : Vector % -> local #1 missing > rightCharacteristicPolynomial : % -> SparseUnivariatePolynomial local >#1 missing > rightAlternative? : () -> Boolean ALGSC;rightAlternative?;B;19 > represents : Vector local #1 -> % missing > represents : (Vector local #1,Vector %) -> % missing > recip : % -> Union(%,QUOTE failed) ALGSC;recip;$U;1 if #1 has >IntegralDomain > rank : () -> PositiveInteger ALGSC;rank;Pi;9 > powerAssociative? : () -> Boolean missing > plenaryPower : (%,PositiveInteger) -> % missing > noncommutativeJordanAlgebra? : () -> Boolean missing > lieAlgebra? : () -> Boolean missing > lieAdmissible? : () -> Boolean ALGSC;lieAdmissible?;B;21 > leftUnits : () -> Union(Record(particular: %,basis: List %),QUOTE >failed) missing if #1 has IntegralDomain > leftUnit : () -> Union(%,QUOTE failed) missing if #1 has IntegralDomain > leftTraceMatrix : () -> Matrix local #1 missing > leftTraceMatrix : Vector % -> Matrix local #1 missing > leftTrace : % -> local #1 missing > leftRegularRepresentation : % -> Matrix local #1 missing > leftRegularRepresentation : (%,Vector %) -> Matrix local #1 missing > leftRecip : % -> Union(%,QUOTE failed) missing if #1 has IntegralDomain > leftRankPolynomial : () -> SparseUnivariatePolynomial Polynomial local >#1 missing if #1 has Field > leftPower : (%,PositiveInteger) -> % missing > leftNorm : % -> local #1 missing > leftMinimalPolynomial : % -> SparseUnivariatePolynomial local #1 >missing if #1 has IntegralDomain > leftDiscriminant : () -> local #1 missing > leftDiscriminant : Vector % -> local #1 missing > leftCharacteristicPolynomial : % -> SparseUnivariatePolynomial local #1 >missing > leftAlternative? : () -> Boolean ALGSC;leftAlternative?;B;18 > latex : % -> String missing > jordanAlgebra? : () -> Boolean ALGSC;jordanAlgebra?;B;23 > jordanAdmissible? : () -> Boolean ALGSC;jordanAdmissible?;B;22 > jacobiIdentity? : () -> Boolean ALGSC;jacobiIdentity?;B;24 > hash : % -> SingleInteger missing > flexible? : () -> Boolean ALGSC;flexible?;B;20 > elt : (%,Integer) -> local #1 ALGSC;elt;$IR;10 > coordinates : % -> Vector local #1 ALGSC;coordinates;$V;5 > coordinates : Vector % -> Matrix local #1 missing > coordinates : (Vector %,Vector %) -> Matrix local #1 missing > coordinates : (%,Vector %) -> Vector local #1 ALGSC;coordinates;$VV;6 > convert : % -> Vector local #1 missing > convert : Vector local #1 -> % missing > conditionsForIdempotents : () -> List Polynomial local #1 missing > conditionsForIdempotents : Vector % -> List Polynomial local #1 missing > commutator : (%,%) -> % missing > commutative? : () -> Boolean ALGSC;commutative?;B;16 > coerce : Vector local #1 -> % ALGSC;coerce;V$;3 > coerce : % -> OutputForm ALGSC;coerce;$Of;11 > basis : () -> Vector % ALGSC;basis;V;7 > associatorDependence : () -> List Vector local #1 missing if #1 has >IntegralDomain > associator : (%,%,%) -> % missing > associative? : () -> Boolean ALGSC;associative?;B;14 > apply : (Matrix local #1,%) -> % looked up > antiCommutator : (%,%) -> % missing > antiCommutative? : () -> Boolean ALGSC;antiCommutative?;B;17 > antiAssociative? : () -> Boolean ALGSC;antiAssociative?;B;15 > alternative? : () -> Boolean ALGSC;alternative?;B;13 > 0 : () -> % missing > ?=? : (%,%) -> Boolean missing > -? : % -> % missing > ?-? : (%,%) -> % missing > ?+? : (%,%) -> % missing > ?**? : (%,PositiveInteger) -> % missing > ?*? : (SquareMatrix(local #2,local #1),%) -> % ALGSC;*;Sm2$;2 > ?*? : (local #1,%) -> % missing > ?*? : (%,local #1) -> % missing > ?*? : (%,%) -> % ALGSC;*;3$;12 > ?*? : (Integer,%) -> % missing > ?*? : (NonNegativeInteger,%) -> % missing > ?*? : (PositiveInteger,%) -> % missing >----------------Atts----------------- > 0 unitsKnown if #1 has IntegralDomain > 1 leftUnitary > 2 rightUnitary >----------------Preds----------------- > 1 #1 has Field > 2 #1 has IntegralDomain >----------------Cats----------------- > 0 FramedNonAssociativeAlgebra local #1 package > 1 FiniteRankNonAssociativeAlgebra local #1 package > 2 NonAssociativeAlgebra local #1 package > 3 Module local #1 package > 4 BiModule(local #1,local #1) > 5 NonAssociativeRng package > 6 LeftModule SquareMatrix(local #2,local #1) > 7 RightModule local #1 > 8 LeftModule local #1 > 9 AbelianGroup package > 10 CancellationAbelianMonoid > 11 AbelianMonoid package > 12 AbelianSemiGroup package > 13 Monad package > 14 SetCategory package > 15 BasicType package > 16 CoercibleTo OutputForm >----------------Data------------------ >Operation data from slot 1 > >#(~= 197 |zero?| 203 |unit| 208 |subtractIfCan| 212 >|structuralConstants| 218 |someBasis| 227 |sample| 231 |rightUnits| 235 >|rightUnit| 239 |rightTraceMatrix| 243 |rightTrace| 252 >|rightRegularRepresentation| 257 |rightRecip| 268 |rightRankPolynomial| >273 |rightPower| 277 |rightNorm| 283 |rightMinimalPolynomial| 288 >|rightDiscriminant| 293 |rightCharacteristicPolynomial| 302 >|rightAlternative?| 307 |represents| 311 |recip| 322 |rank| 327 >|powerAssociative?| 331 |plenaryPower| 335 >|noncommutativeJordanAlgebra?| 341 |lieAlgebra?| 345 |lieAdmissible?| >349 |leftUnits| 353 |leftUnit| 357 |leftTraceMatrix| 361 |leftTrace| 370 >|leftRegularRepresentation| 375 |leftRecip| 386 |leftRankPolynomial| 391 >|leftPower| 395 |leftNorm| 401 |leftMinimalPolynomial| 406 >|leftDiscriminant| 411 |leftCharacteristicPolynomial| 420 >|leftAlternative?| 425 |latex| 429 |jordanAlgebra?| 434 >|jordanAdmissible?| 438 |jacobiIdentity?| 442 |hash| 446 |flexible?| 451 >|elt| 455 |coordinates| 461 |convert| 483 |conditionsForIdempotents| 493 >|commutator| 502 |commutative?| 508 |coerce| 512 |basis| 522 >|associatorDependence| 526 |associator| 530 |associative?| 537 |apply| >541 |antiCommutator| 547 |antiCommutative?| 553 |antiAssociative?| 557 >|alternative?| 561 |Zero| 565 = 569 - 575 + 586 ** 592 * 598) >Information vector has 640 entries > 0 | 1 12 11 0 13 1 16 15 0 17 > 10 | 2 0 0 15 0 18 1 10 0 20 > 20 | 21 1 10 25 0 26 1 20 0 25 > 30 | 27 1 30 29 0 31 0 6 0 32 > 40 | 3 15 0 33 33 6 34 2 30 2 > 50 | 0 29 35 3 15 0 0 29 20 36 > 60 | 2 39 38 15 20 40 1 6 41 0 > 70 | 42 2 20 41 45 0 46 1 10 0 > 80 | 48 49 2 10 6 0 29 52 1 10 > 90 | 41 0 54 1 6 55 0 56 0 6 > 100 | 0 57 2 6 41 0 0 58 2 60 > 110 | 59 0 29 61 1 59 55 0 62 2 > 120 | 55 0 0 0 63 2 55 0 0 0 > 130 | 64 2 66 55 65 0 67 2 20 0 > 140 | 33 6 69 2 6 0 0 0 70 2 > 150 | 23 15 0 29 71 3 15 6 0 29 > 160 | 29 72 2 6 0 0 0 73 3 20 > 170 | 6 0 29 6 74 2 6 0 0 0 > 180 | 76 1 55 77 78 79 2 6 0 48 > 190 | 0 89 1 6 11 0 90 2 0 41 > 200 | 0 0 1 1 0 41 0 1 0 2 > 210 | 11 1 2 0 11 0 0 1 0 0 > 220 | 23 24 1 0 23 43 1 0 0 43 > 230 | 50 0 0 0 1 0 2 96 1 0 > 240 | 2 11 1 0 0 15 1 1 0 15 > 250 | 43 1 1 0 6 0 1 1 0 15 > 260 | 0 1 2 0 15 0 43 1 1 2 > 270 | 11 0 1 0 1 94 1 2 0 0 > 280 | 0 48 1 1 0 6 0 1 1 2 > 290 | 97 0 1 0 0 6 1 1 0 6 > 300 | 43 1 1 0 97 0 1 0 0 41 > 310 | 86 1 0 0 20 1 2 0 0 20 > 320 | 43 1 1 2 11 0 14 0 0 48 > 330 | 51 0 0 41 1 2 0 0 0 48 > 340 | 1 0 0 41 1 0 0 41 1 0 > 350 | 0 41 88 0 2 96 1 0 2 11 > 360 | 1 0 0 15 1 1 0 15 43 1 > 370 | 1 0 6 0 1 1 0 15 0 1 > 380 | 2 0 15 0 43 1 1 2 11 0 > 390 | 1 0 1 94 1 2 0 0 0 48 > 400 | 1 1 0 6 0 1 1 2 97 0 > 410 | 1 0 0 6 1 1 0 6 43 1 > 420 | 1 0 97 0 1 0 0 41 85 1 > 430 | 0 78 0 1 0 0 41 92 0 0 > 440 | 41 91 0 0 41 93 1 0 100 0 > 450 | 1 0 0 41 87 2 0 6 0 29 > 460 | 53 1 0 20 0 28 1 0 15 43 > 470 | 1 2 0 15 43 43 1 2 0 20 > 480 | 0 43 47 1 0 20 0 1 1 0 > 490 | 0 20 1 0 0 99 1 1 0 99 > 500 | 43 1 2 0 0 0 0 1 0 0 > 510 | 41 83 1 0 0 20 22 1 0 55 > 520 | 0 68 0 0 43 44 0 2 98 1 > 530 | 3 0 0 0 0 0 1 0 0 41 > 540 | 81 2 0 0 15 0 18 2 0 0 > 550 | 0 0 1 0 0 41 84 0 0 41 > 560 | 82 0 0 41 80 0 0 0 1 2 > 570 | 0 41 0 0 1 1 0 0 0 1 > 580 | 2 0 0 0 0 1 2 0 0 0 > 590 | 0 1 2 0 0 0 48 1 2 0 > 600 | 0 16 0 19 2 0 0 6 0 1 > 610 | 2 0 0 0 6 1 2 0 0 0 > 620 | 0 75 2 0 0 29 0 1 2 0 > 630 | 0 33 0 1 2 0 0 48 0 1 >----------------Size------------------ >infovec total = 4434 BYTES >template = 2064 >operations = 556 (complete) >attributes = 6 >categories = 528 >data vector = 1280 >number of function slots (one extra node) = 24 >number of latch slots (2 extra nodes) = 35 >number of lazy slots (no extra nodes) = 37 >size of domain vectors = 101 slots >domain size = 5562 BYTES >cost per instantiation = 1536 BYTES >(1) -> > _______________________________________________ Axiom-developer mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/axiom-developer
