diff --git a/books/bookvol10.4.pamphlet b/books/bookvol10.4.pamphlet index a6ec05e..a8a5382 100644 --- a/books/bookvol10.4.pamphlet +++ b/books/bookvol10.4.pamphlet @@ -55579,6 +55579,159 @@ LinGroebnerPackage(lv,F) : C == T @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{package LOP LinesOpPack} +<>= +)set break resume +)sys rm -f LinesOpPack.output +)spool LinesOpPack.output +)set message test on +)set message auto off +)clear all + +--S 1 of 1 +)show LinesOpPack +--R LinesOpPack K: Field is a package constructor +--R Abbreviation for LinesOpPack is LOP +--R This constructor is exposed in this frame. +--R Issue )edit bookvol10.4.pamphlet to see algebra source code for LOP +--R +--R------------------------------- Operations -------------------------------- +--R quotVecSpaceBasis : (List List K,List List K) -> List List K +--R reduceLineOverLine : (List K,List K,K) -> List K +--R reduceRow : List List K -> List List K +--R reduceRowOnList : (List K,List List K) -> List List K +--R rowEchWoZeroLines : Matrix K -> Matrix K +--R rowEchWoZeroLinesWOVectorise : Matrix K -> Matrix K +--R +--E 1 + +)spool +)lisp (bye) +@ +<>= +==================================================================== +LinesOpPack examples +==================================================================== + +See Also: +o )show LinesOpPack + +@ +\pagehead{LinesOpPack}{LOP} +\pagepic{ps/v104linesoppack.ps}{LOP}{1.00} + +{\bf Exports:}\\ +\begin{tabular}{lll} +\cross{LOP}{quotVecSpaceBasis} & +\cross{LOP}{reduceLineOverLine} & +\cross{LOP}{reduceRow} \\ +\cross{LOP}{reduceRowOnList} & +\cross{LOP}{rowEchWoZeroLines} & +\cross{LOP}{rowEchWoZeroLinesWOVectorise} +\end{tabular} + +<>= +)abbrev package LOP LinesOpPack +++ Authors: G. Hache +++ Date Created: 21 sept 1994 +++ Date Last Updated: May 2010 by Tim Daly +++ Description: +++ A package that exports several linear algebra operations over lines +++ of matrices. Part of the PAFF package. +LinesOpPack(K):P==T where + + K:Field + + P==> with + rowEchWoZeroLinesWOVectorise: Matrix(K) -> Matrix(K) + rowEchWoZeroLines: Matrix(K) -> Matrix(K) + reduceRow: List(List(K)) -> List(List(K)) + ++ reduceRow: if the input is considered as a matrix, the output would + ++ be the row reduction matrix. It's almost the rowEchelon form + ++ except that no permution of lines is performed. + quotVecSpaceBasis: (List(List(K)),List(List(K))) -> List(List(K)) + ++ quotVecSpaceBasis(b1,b2) returns a basis of V1/V2 where + ++ V1 and V2 are vector space with basis b1 and b2 resp. and + ++ V2 is suppose to be include in V1; Note that if + ++ it is not the case then it returs the basis of V1/W + ++ where W = intersection of V1 and V2 + reduceLineOverLine: (List(K),List(K),K) -> List(K) + ++reduceLineOverLine(v1,v2,a) returns v1-a*v1 where + ++ v1 and v2 are considered as vector space. + reduceRowOnList: (List(K),List(List(K))) -> List(List(K)) + ++ reduceRowOnList(v,lvec) applies a row reduction on each of the + ++ element of lv using v according to a pivot in v which is set to + ++ be the first non nul element in v. + + T==> add + localRowEchelon: Matrix(K) -> Matrix(K) + localRowEchelon(m)== + ^(K has PseudoAlgebraicClosureOfPerfectFieldCategory ) => rowEchelon m + llm:List(List(K)):= listOfLists m + l:= first llm + maxT:= maxTower l + lv := [vectorise(a,maxT)$K for a in l] + subMatl := transpose matrix [entries(v) for v in lv] + matl:= subMatl + for l in rest llm repeat + maxT:= maxTower l + lv := [vectorise(a,maxT)$K for a in l] + subMatl := transpose matrix [entries(v) for v in lv] + matl:=vertConcat(matl,subMatl) + rowEchelon matl + + rowEchWoZeroLines(m)== + mm:=localRowEchelon m + ll:=listOfLists mm + n:= # first ll + lZero:=new(n pretend NonNegativeInteger,0)$List(K) + llll:= [ l for l in ll | ^(lZero = l) ] + empty?(llll) => matrix [lZero] + matrix llll + + rowEchWoZeroLinesWOVectorise(m)== + mm:=rowEchelon m + ll:=listOfLists mm + n:= # first ll + lZero:=new(n pretend NonNegativeInteger,0)$List(K) + llll:= [ l for l in ll | ^(lZero = l) ] + empty?(llll) => matrix [lZero] + matrix llll + + quotVecSpaceBasis(l2,l1)== + redBasis:=reduceRow(concat(l1,l2)) + tempRes:=rest(redBasis,#l1) + allZero:=new(#l1.1,0$K) + [l for l in tempRes | ^(l=allZero)] + + reduceRowOnList(line,listOfLine)== + frsNonNul:Integer:=position(^zero?(#1),line) + ^(frsNonNul > 0) => listOfLine + a:= line.frsNonNul + inva:= inv a + newLine:=[inva*c for c in line] + [reduceLineOverLine(newLine,l,l.frsNonNul) for l in listOfLine] + + reduceLineOverLine(l1,l2,b)== + [c2 - b*c1 for c2 in l2 for c1 in l1] + + reduceRow(m:List(List(K)))== + n:=#m + mcopy:List(List(K)):=copy m + newBottom:List(List(K)) + for i in 1..(n-1) repeat + newBottom:=reduceRowOnList(mcopy.i,[mcopy.j for j in (i+1)..n]) + mcopy:=concat([mcopy.k for k in 1..i] :: List(List(K)),newBottom) + mcopy + +@ +<>= +"LOP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=LOP"] +"IVECTOR" [color="#88FF44",href="bookvol10.3.pdf#nameddest=IVECTOR"] +"LOP" -> "IVECTOR" + +@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{package LF LiouvillianFunction} \pagehead{LiouvillianFunction}{LF} \pagepic{ps/v104liouvillianfunction.ps}{LF}{1.00} @@ -154882,6 +155035,7 @@ ZeroDimensionalSolvePackage(R,ls,ls2): Exports == Implementation where <> <> <> +<> <> <> <> diff --git a/books/bookvol5.pamphlet b/books/bookvol5.pamphlet index c3e35e8..342f9f2 100644 --- a/books/bookvol5.pamphlet +++ b/books/bookvol5.pamphlet @@ -23999,6 +23999,7 @@ otherwise the new algebra won't be loaded by the interpreter when needed. (|LinearSystemMatrixPackage1| . LSMP1) (|LinearSystemPolynomialPackage| . LSPP) (|List| . LIST) + (|LinesOpPack| . LOP) (|ListFunctions2| . LIST2) (|ListFunctions3| . LIST3) (|ListToMap| . LIST2MAP) diff --git a/books/ps/v104linesoppack.ps b/books/ps/v104linesoppack.ps new file mode 100644 index 0000000..e773965 --- /dev/null +++ b/books/ps/v104linesoppack.ps @@ -0,0 +1,18 @@ +.if !dPS .ds PS +.if !dPE .ds PE +.lf 1 - +digraph pic { + fontsize=10; + bgcolor=yellow + node [shape=box, color=lightblue, style=filled]; + +"LOP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=LOP"] +"IVECTOR" [color="#88FF44",href="bookvol10.3.pdf#nameddest=IVECTOR"] +"LOP" -> "IVECTOR" + +} + + + + + diff --git a/changelog b/changelog index b3714d4..7f47887 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,8 @@ +20100511 tpd src/axiom-website/patches.html 20100511.01.tpd.patch +20100511 tpd src/algebra/Makefile help and test files for LinesOpPack +20100511 tpd books/bookvol5 expose LinesOpPack +20100511 tpd books/bookvol10.4 add LinesOpPack +20100511 tpd books/ps/v104linesoppack.ps added 20100510 tpd src/axiom-website/patches.html 20100510.02.tpd.patch 20100510 tpd src/algebra/Makefile add FACTEXT 20100510 tpd books/bookvol5 expose FACTEXT diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index 0d641a3..ee5a247 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -4516,7 +4516,8 @@ LAYER10=\ ${OUT}/DIRPCAT.o ${OUT}/DIRPCAT-.o ${OUT}/D02BBFA.o ${OUT}/D02BHFA.o \ ${OUT}/D02CJFA.o ${OUT}/FAXF.o ${OUT}/FAXF-.o ${OUT}/FFPOLY2.o \ ${OUT}/FNLA.o ${OUT}/GRAY.o ${OUT}/HB.o ${OUT}/INBFF.o \ - ${OUT}/IRSN.o ${OUT}/MCALCFN.o ${OUT}/MHROWRED.o ${OUT}/NUMODE.o \ + ${OUT}/IRSN.o ${OUT}/LOP.o \ + ${OUT}/MCALCFN.o ${OUT}/MHROWRED.o ${OUT}/NUMODE.o \ ${OUT}/NUMQUAD.o ${OUT}/ODESYS.o ${OUT}/ODETOOLS.o ${OUT}/ORDFUNS.o \ ${OUT}/PERMAN.o ${OUT}/PFECAT.o ${OUT}/PFECAT-.o ${OUT}/POINT.o \ ${OUT}/PSEUDLIN.o ${OUT}/PTPACK.o ${OUT}/REP2.o ${OUT}/SETMN.o \ @@ -4851,6 +4852,19 @@ LAYER10=\ /*"IRSN" -> {"A1AGG-"; "FLAGG-"; "LNAGG-"; "IXAGG-"; "CLAGG-"; "HOAGG-"}*/ /*"IRSN" -> {"ORDSET-"; "AGG-"; "ELTAGG-"; "SETCAT-"; "BASTYPE-"}*/ +"LOP" [color="#FF4488",href="bookvol10.4.pdf#nameddest=LOP"] +/*"LOP" -> {"FIELD"; "EUCDOM"; "PID"; "GCDDOM"; "INTDOM"; "COMRING"; "RING"}*/ +/*"LOP" -> {"RNG"; "ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SETCAT"}*/ +/*"LOP" -> {"BASTYPE"; "KOERCE"; "SGROUP"; "MONOID"; "LMODULE"; "BMODULE"}*/ +/*"LOP" -> {"RMODULE"; "ALGEBRA"; "MODULE"; "ENTIRER"; "UFD"; "DIVRING"}*/ +/*"LOP" -> {"PACPERC"; "INT"; "LIST"; "ILIST"; "VECTOR"}*/ +"LOP" -> "IVECTOR" +/*"LOP" -> {"IARRAY1"; "VECTCAT-"; "A1AGG-"; "FLAGG-"; "LNAGG-"; "IXAGG-"}*/ +/*"LOP" -> {"LSAGG"; "STAGG"; "URAGG"; "RCAGG"; "HOAGG"; "AGG"; "TYPE"}*/ +/*"LOP" -> {"EVALAB"; "IEVALAB"; "LNAGG"; "IXAGG"; "ELTAGG"; "ELTAB"}*/ +/*"LOP" -> {"CLAGG"; "KONVERT"; "FLAGG"; "ORDSET"; "ELAGG"; "OM"; "LSAGG-"}*/ +/*"LOP" -> {"BOOLEAN"; "STAGG-"; "NNI"; "SINT"}*/ + "MCALCFN" [color="#FF4488",href="bookvol10.4.pdf#nameddest=MCALCFN"] /*"MCALCFN" -> {"SETCAT"; "BASTYPE"; "KOERCE"; "PDRING"; "RING"; "RNG"}*/ /*"MCALCFN" -> {"ABELGRP"; "CABMON"; "ABELMON"; "ABELSG"; "SGROUP"; "MONOID"}*/ @@ -16057,6 +16071,21 @@ ${MID}/FACTEXT.nrlib/code.o: ${MID}/FACTEXT.spad | ${INTERPSYS} >${TMP}/trace ; \ fi ) @ +<>= + +LOPDEPS = PACPERC + +${MID}/LOP.nrlib/code.o: ${MID}/LOP.spad + @echo P3 making ${MID}/LOP.nrlib/code.o from ${MID}/LOP.spad + @ (cd ${MID} ; \ + if [ -z "${NOISE}" ] ; then \ + echo -e ")lib ${LOPDEPS} \n )co LOP.spad" \ + | ${INTERPSYS} ; \ + else \ + echo -e ")lib ${LOPDEPS} \n )co LOP.spad" \ + | ${INTERPSYS} >${TMP}/trace ; \ + fi ) +@ \section{Broken Files} These files are Aldor files @@ -16828,6 +16857,7 @@ SPADHELP=\ ${HELP}/LinearOrdinaryDifferentialOperator1.help \ ${HELP}/LinearOrdinaryDifferentialOperator2.help \ ${HELP}/List.help \ + ${HELP}/LinesOpPack.help \ ${HELP}/LyndonWord.help \ ${HELP}/Magma.help \ ${HELP}/MakeFunction.help \ @@ -16996,6 +17026,7 @@ REGRESS= \ LinearOrdinaryDifferentialOperator1.regress \ LinearOrdinaryDifferentialOperator2.regress \ List.regress \ + LinesOpPack.regress \ LyndonWord.regress \ Magma.regress \ MathMLFormat.regress \ @@ -17818,6 +17849,15 @@ ${HELP}/List.help: ${BOOKS}/bookvol10.3.pamphlet >${INPUT}/List.input @echo "List (LIST)" >>${HELPFILE} +${HELP}/LinesOpPack.help: ${BOOKS}/bookvol10.4.pamphlet + @echo 7565 create LinesOpPack.help from ${BOOKS}/bookvol10.4.pamphlet + @${TANGLE} -R"LinesOpPack.help" ${BOOKS}/bookvol10.4.pamphlet \ + >${HELP}/LinesOpPack.help + @cp ${HELP}/LinesOpPack.help ${HELP}/LOP.help + @${TANGLE} -R"LinesOpPack.input" ${BOOKS}/bookvol10.4.pamphlet \ + >${INPUT}/LinesOpPack.input + @echo "LinesOpPack (LOP)" >>${HELPFILE} + ${HELP}/LyndonWord.help: ${BOOKS}/bookvol10.3.pamphlet @echo 7570 create LyndonWord.help from \ ${BOOKS}/bookvol10.3.pamphlet diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index d06ccf4..2a6b2a7 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2683,5 +2683,7 @@ books/bookvol10.3 add PseudoAlgebraicClosureOfFiniteField
books/bookvol10.2 PseudoAlgebraicClosureOfAlgExtOfRationalNumberCategory
20100510.02.tpd.patch books/bookvol10.4 add FactorisationOverPseudoAlgebraicClosureOfAlgExtOfRationalNumber
+20100511.01.tpd.patch +books/bookvol10.4 add LinesOpPack