I have deleted my mails, sorry. But something like: 7) -> jlDocumentation mod <TAB> <TAB> modTree modifyPointData modularFactor modularLambda moduleSum mod_exp modpeval modularGcdPrimitive modular_compose moduloP modifyPoint modpreduction modularInvariantJ module modulus
(7) -> jlDocumentation moduleSum moduleSum(m1, m2) returns the sum of two modules in the framed algebra F. Each module mi is represented as fol lows: F is a framed algebra with R-module basis w1, w2, ..., wn and mi is a record [basis, basisDen, basisInv] . If basis is the matrix (aij, i = 1..n, j = 1..n), then a basis v1, ..., vn for mi is given by vi = (1/basisD en) * sum(aij * wj, j = 1..n), i.e. the ith row of 'basis' contains the coordinates of the ith basis vector. S imilarly, the ith row of the matrix basisInv contains the coordinates of wi with respect to the basis v1, ..., vn: if basisInv is the matrix (bij, i = 1..n, j = 1..n), then wi = sum(bij * vj, j = 1..n). From: IntegralBas isTools Type: Void (7) -> jlDocumentation mod <TAB><TAB> modTree modifyPointData modularFactor modularLambda moduleSum mod_exp modpeval modularGcdPrimitive modular_compose moduloP modifyPoint modpreduction modularInvariantJ module modulus (7) -> jlDocumentation modpreduction modpreduction(r, p) reduces a rational function r modulo prime p. From: PolynomialEvaluationUtilities modpreduction(p, q) reduces all coefficients of p modulo q. From: ModularEvaluationCategory modpreduction(pol, p) reduces polynomial pol modulo prime p. From: PolynomialEvaluationUtilities Type: Void That uses a regular expressions system, sorry, strings are very bad handled in panAxiom. But just that's would be very handy. BTW: Timothy, your 'X' is already implemented in HyperTex with: ++ For example, using JLMatrix(JLObjFloat64): ++ \example{M:=nrand(4,4);} ++ \example{jlApply("svd", M::JLMatrix(JLObjFloat64)).S} ++ should be "equivalent" to svdvals(M) Maybe I do not understand your 'X'. BTW2: All my reconnaissance, of course, Tim. Cheers, Greg Le jeu. 12 juin 2025 à 12:32, Tim Daly <axiom...@gmail.com> a écrit : > > Taking the idea from Ralf it seems that there could be a "hyperdoc" domain > that implements all of the functions necessary to create user documentation > with both text output and HTML output forms. From that domain it should > be possible to re-create Hyperdoc in a browser. > > > > On Thursday, June 12, 2025 at 6:29:38 AM UTC-4 Tim Daly wrote: >> >> Within algebra documentation for a function there are ++ and -- comments >> The ++ comments are intended as documentation. >> >> I have extended the meaning of ++ comments by appending a single letter. >> For example in the 'map' function from 'StreamFunction3' you'll see >> >> map : ((A,B) -> C,ST A,ST B) -> ST C >> ++ map(f,st1,st2) returns the stream whose elements are the >> ++ function f applied to the corresponding elements of st1 and st2. >> ++ \spad{map(f,[x0,x1,x2,..],[y0,y1,y2,..]) = [f(x0,y0),f(x1,y1),..]}. >> ++ >> ++S >> ++X m:=[i for i in 1..]::Stream(Integer) >> ++X n:=[i for i in 1..]::Stream(Integer) >> ++X f(i:Integer,j:Integer):Integer == i+j >> ++X map(f,m,n) >> >> The ++X comments are part of the output shown during display functions, e.g. >> >> )d op map >> >> will show the ++X comments as "examples" of how to use the function. >> >> There is also the 'ApplicationProgramInterface' which allows user-level >> access >> to various data structures: >> >> )abbrev package API ApplicationProgramInterface >> ++ Author: Timothy Daly, Martin Rubey >> ++ Date Created: 3 March 2009 >> ++ Date Last Updated: 24 March 2012 >> ++ Description: >> ++ This package contains useful functions that expose Axiom system internals >> >> ApplicationProgramInterface() : SIG == CODE where >> >> SIG ==> with >> >> getDomains : Symbol -> Set Symbol >> ++ getDomains(s) takes a category and returns the list of domains >> ++ that have that category >> ++ >> ++X getDomains 'IndexedAggregate >> >> getAncestors : Symbol -> Set Symbol >> ++ getAncestors(s) takes a category and returns the list of domains >> ++ that have that category as ancestors >> ++ >> ++X getAncestors 'IndexedAggregate >> >> credits : () -> Void >> ++ credits() prints a list of people who contributed to Axiom >> ++ >> ++X credits() >> >> summary : () -> Void >> ++ summary() prints a short list of useful console commands >> ++ >> ++X summary() >> >> reportInstantiations : Boolean -> Void >> ++ reportInstantiations(bool) is a debugging tool to show >> ++ instantiation information >> ++ >> ++X reportInstantiations(true) >> ++X 1 >> ++X reportInstantiations(false) >> >> CODE ==> add >> >> getDomains(cat:Symbol):Set(Symbol) == >> set [symbol car first destruct a _ >> for a in (destruct domainsOf(cat,NIL$Lisp)$Lisp)::List(SExpression)] >> >> getAncestors(cat:Symbol):Set(Symbol) == >> set [symbol car first destruct a _ >> for a in (destruct >> ancestorsOf(cat,NIL$Lisp)$Lisp)::List(SExpression)] >> >> credits() == ( credits()$Lisp ; void() ) >> >> summary() == ( summary()$Lisp ; void() ) >> >> reportInstantiations(b:Boolean): Void == >> REPORTINSTANTIATIONS(b)$Lisp >> void >> >> >> >> >> On Thu, Jun 12, 2025 at 5:06 AM Grégory Vanuxem <g.va...@gmail.com> wrote: >>> >>> Hello, >>> >>> >>> Le mer. 11 juin 2025 à 20:59, 'Ralf Hemmecke' via FriCAS - computer >>> algebra system <fricas...@googlegroups.com> a écrit : >>> > >>> > Hi Waldek, >>> > >>> > as you know, I would like to let HyperDoc die. >>> > But, maybe that sound too extreme for what I actually mean. >>> > And I agree to some extend to your plan for a new hyperdoc. >>> > >>> > Let me explain my wishes. >>> > >>> > FriCAS should have an interface (in LISP or SPAD) that let's >>> > SPAD or external programs get information about >>> > categories/domains/packages/documentation. >>> > From such an interface it should be easy to generate any output format >>> > be it html, rst or pdf. >>> >>> +1 >>> >>> For what I am interested in right now, is displaying '++' >>> documentation in text form, and. readable directly in the interpreter >>> console. >>> From what I have read in api.spad and api2.spad the implementations >>> are tightly related the reST and HTML formats and I would like >>> plain/text format also. I do not want to use a Regex style replacement >>> method as it requires Julia or cl-ppcre and/or, for my concern, >>> cl-ppcre-unicode. Looking at api2 for example there is code to return >>> TexTree as a SEX expression. There is a TeXTree to HTML converter >>> which outputs the conversion in a file, no routine from what I have >>> seen that converts it to a String. I will eventually code something in >>> this regard. Maybe Waldek, you have already done this privately? >>> Having a generic parser would be a very good idea, I think. Gathering >>> the two parser implementations. >>> >>> >>> jlDocumentation(op) == >>> ops := getDatabase("o")$OperationsQuery >>> docs := elt(ops,equation('name, op)$QueryEquation) >>> elts : DataList(String) := elt(docs,'doc) >>> for i in 1 .. #elts repeat >>> output((elts.i)::OutputForm)$OutputPackage >>> -- PPRINT(jlEvalString(concat(["replace(raw_"", >>> >>> "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of >>> \spad{ >>> m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * >>> \spad{SVD}.\sp >>> ad{Vt} = \spad{m}." >>> "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of >>> \spad{ >>> m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * >>> \spad{SVD}.\sp >>> ad{Vt} = \spad{m}." >>> "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of >>> \spad{ >>> m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * >>> \spad{SVD}.\sp >>> ad{Vt} = \spad{m}." >>> "\spad{svd(m)} computes the singular value decomposition \spad{SVD} of >>> \spad{ >>> m} such that \spad{SVD}.\spad{U} * diagonalMatrix(\spad{sv}) * >>> \spad{SVD}.\sp >>> ad{Vt} = \spad{m}." >>> "\spad{svd(m)} computes the singular value decomposition of the matrix >>> \spad{ >>> m}." >>> Type: >>> Void >>> >>> And regexing/replacing, completely irrelevant for me, some Tex-like >>> construct I would like to obtain something like: >>> (25) -> jlDocumentation "svd" >>> >>> "svd(m) computes the singular value decomposition SVD of m such that >>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m." >>> "svd(m) computes the singular value decomposition SVD of m such that >>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m." >>> "svd(m) computes the singular value decomposition SVD of m such that >>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m." >>> "svd(m) computes the singular value decomposition SVD of m such that >>> SVD.U * diagonalMatrix(sv) * SVD.Vt = m." >>> "svd(m) computes the singular value decomposition of the matrix m." >>> Type: >>> Void >>> >>> or: >>> >>> (26) -> jlDocumentation "string" >>> >>> "string(f) gives string corresponding to f. Valid only when string?(f) is >>> true" >>> "string(i) returns the decimal representation of i as a string." >>> "string(s) returns s as an element of Str. Error: if s is not an atom >>> that also belongs to Str." >>> "string(jt) returns the string representation of jt." >>> "string(x) stringifies x." >>> "string(s) converts the symbol s to a string. Error: if the symbol is >>> subscripted." >>> >>> (27) -> jlDocumentation "str" >>> Type: >>> Void >>> >>> But with more information (conditional exports, origins etc.) and >>> more options. Probably as a system command? >>> )display doc string as an example. >>> >>> Just my two cents. >>> >>> - Greg >>> >>> -- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "FriCAS - computer algebra system" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/fricas-devel/mb_O0196RMQ/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> fricas-devel...@googlegroups.com. >>> To view this discussion visit >>> https://groups.google.com/d/msgid/fricas-devel/CAHnU2dY5SH52A0U56a8kSqSBO%2BFX0Lzsq%3Dw6hzBCfcuBd20m8Q%40mail.gmail.com. > > -- > You received this message because you are subscribed to the Google Groups > "FriCAS - computer algebra system" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to fricas-devel+unsubscr...@googlegroups.com. > To view this discussion visit > https://groups.google.com/d/msgid/fricas-devel/d2b4d3a4-ce9e-4483-9d10-83f4add78e06n%40googlegroups.com. -- You received this message because you are subscribed to the Google Groups "FriCAS - computer algebra system" group. To unsubscribe from this group and stop receiving emails from it, send an email to fricas-devel+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/fricas-devel/CAHnU2dYuiju2PAUO3GyADN1TXYBsaYE-MYKrUsCA-ZL9_g_4kg%40mail.gmail.com.