From: Robert D. <rob...@us...> - 2008-07-16 05:37:34
|
Update of /cvsroot/maxima/maxima/share/contrib/Zeilberger In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv29390/Zeilberger Modified Files: readme.txt settings.mac whatsnew.txt zb_prover.mac zeilberger_algorithm.mac Log Message: Commit new version of Zeilberger, gf, and sarag packages, submitted by Fabrizio Caruso 2008-07-15. Fabrizio says: gf: two small bug fixes related to "gf_set" sarag: small but significant bug fixes related to "gcdFreePart" slightly changed the output in the signed remainder sequence zeilberger: "zb_prove" also takes 3 parameters (the fourth argument is computed when it is not present) "zeilberger" also takes 4 parameters (same as "parGosper") Index: readme.txt =================================================================== RCS file: /cvsroot/maxima/maxima/share/contrib/Zeilberger/readme.txt,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- readme.txt 9 Feb 2007 22:32:34 -0000 1.6 +++ readme.txt 16 Jul 2008 05:36:45 -0000 1.7 @@ -115,7 +115,7 @@ NON_HYPERGEOMETRIC --------------------------------------------------------------------------- -- parGosper(F_n,k , k , n , d) +- parGosper(F_n,k,n,d) parGosper tries to find a d-th order recurrence. If it finds one it outputs it in the form (*). @@ -125,7 +125,9 @@ [NON_PROPER_HYPERGEOMETRIC] --------------------------------------------------------------------------- -- Zeilberger(F_n,k , k , n) +- Zeilberger(F_n,k,n) + +- Zeilberger(F_n,k,n,d) [same as "parGosper(F_n,k,n,d)"] Zeilberger starts by invoking "Gosper" and if it fails tries "parGosper" with order 1 and tries up to @@ -176,7 +178,7 @@ --------------------------------------------------------------------------- -- zb_meaning(F_n,k,k,n,zb_cert,zb_rec) +- zb_meaning(F_n,k,n,zb_cert,zb_rec) It spells out the meaning of one of the elements in the output of "parGosper" or "Zeilberger", i.e. @@ -184,7 +186,9 @@ --------------------------------------------------------------------------- -- zb_prove(F_n,k,k,n,zb_out) +- zb_prove(F_n,k,n,zb_out) + +- zb_prove(F_n,k,n) [zb_out is computed by "Zeilberger"] It writes a proof and DOES A TEST for all the solutions contained in "zb_out", with level of details depending on the Index: settings.mac =================================================================== RCS file: /cvsroot/maxima/maxima/share/contrib/Zeilberger/settings.mac,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- settings.mac 9 Feb 2007 22:32:34 -0000 1.5 +++ settings.mac 16 Jul 2008 05:36:45 -0000 1.6 @@ -49,4 +49,4 @@ gs_prove_detail : PROOF_MEDIUM; /* Level of details in "zb_prove" and "zb_test" */ -zb_prove_detail : PROOF_LOW; +zb_prove_detail : PROOF_MEDIUM; Index: whatsnew.txt =================================================================== RCS file: /cvsroot/maxima/maxima/share/contrib/Zeilberger/whatsnew.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- whatsnew.txt 10 Jun 2006 05:15:05 -0000 1.2 +++ whatsnew.txt 16 Jul 2008 05:36:45 -0000 1.3 @@ -1,3 +1,17 @@ +WHAT'S NEW (Version 4.1) + +(Only minor aesthetic changes that make the use +of "zb_prove" simpler and make Zeilberger do +also what parGosper does). + +(i) zb_prove produces proofs with more details by default + +(ii) zb_prove also takes 3 arguments (it computes the fourth by itself) + +(iii) Zeilberger also takes four arguments (in this case parGosper is invoked) + + +---------------------------------------------------------------------------- WHAT'S NEW (Version 4.0) (i) Bugs: Index: zb_prover.mac =================================================================== RCS file: /cvsroot/maxima/maxima/share/contrib/Zeilberger/zb_prover.mac,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- zb_prover.mac 8 Jan 2007 11:37:24 -0000 1.2 +++ zb_prover.mac 16 Jul 2008 05:36:45 -0000 1.3 @@ -102,8 +102,21 @@ /* It proves the result of Zeilbeger's algorithm */ /* */ /* The level of verbosity depends on "zb_prove_detail" */ -zb_prove(zb_in,k,n,zb_out) := + +/* zb_prove(zb_in,k,n,zb_out) := */ +zb_prove([args]):= block([i,j,zb_red,proof,undecided], + zb_in:first(args), + k:second(args), + n:third(args), + if length(args)=3 then + ( + zb_out:Zeilberger(zb_in,k,n) + ) + else + ( + zb_out:fourth(args) + ), if length(zb_out) = 0 then ( if zb_prove_detail>=PROOF_LOW then Index: zeilberger_algorithm.mac =================================================================== RCS file: /cvsroot/maxima/maxima/share/contrib/Zeilberger/zeilberger_algorithm.mac,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- zeilberger_algorithm.mac 24 Nov 2007 16:47:20 -0000 1.5 +++ zeilberger_algorithm.mac 16 Jul 2008 05:36:45 -0000 1.6 @@ -511,6 +511,7 @@ print("a[",i,"] = ", parGRes[1][2][i+1]) ); + /* Front-end of the Zeilberger's algorithm with verbosity option */ ZeilbergerVerboseOpt(f,k,n,mode) := block( @@ -567,34 +568,69 @@ ) ; -ZeilbergerSummary(f,k,n) ::= - buildq([f,k,n], - ZeilbergerVerboseOpt(f,k,n,summary) - ); +/* Non verbose version of Zeilberger's algorithm */ +ZeilbergerSummary([args]):= + block([f,k,n], + f:first(args), + k:second(args), + n:third(args), + if length(args)=3 then + ZeilbergerVerboseOpt(f,k,n,summary) + else + parGosperVerboseOpt(f,k,n,fourth(args),summary) + ); -/* Verbose front-end macro of the Zeilberger's algorithm */ -ZeilbergerVerbose(f,k,n) ::= - buildq([f,k,n], - ZeilbergerVerboseOpt(f,k,n,verbose) - ) ; +/* Non verbose version of Zeilberger's algorithm */ +ZeilbergerVerbose([args]):= + block([f,k,n], + f:first(args), + k:second(args), + n:third(args), + if length(args)=3 then + ZeilbergerVerboseOpt(f,k,n,verbose) + else + parGosperVerboseOpt(f,k,n,fourth(args),verbose) + ); -/* Very verbose front-end macro of the Zeilberger's algorithm */ -ZeilbergerVeryVerbose(f,k,n) ::= - buildq([f,k,n], - ZeilbergerVerboseOpt(f,k,n,very_verbose) - ) ; -ZeilbergerExtra(f,k,n) ::= - buildq([f,k,n], - ZeilbergerVerboseOpt(f,k,n,extra) - ); +/* Non verbose version of Zeilberger's algorithm */ +ZeilbergerVeryVerbose([args]):= + block([f,k,n], + f:first(args), + k:second(args), + n:third(args), + if length(args)=3 then + ZeilbergerVerboseOpt(f,k,n,very_verbose) + else + parGosperVerboseOpt(f,k,n,fourth(args),very_verbose) + ); + /* Non verbose version of Zeilberger's algorithm */ -Zeilberger(f,k,n) ::= - buildq([f,k,n], - ZeilbergerVerboseOpt(f,k,n,nonverbose) - ); +ZeilbergerExtra([args]):= + block([f,k,n], + f:first(args), + k:second(args), + n:third(args), + if length(args)=3 then + ZeilbergerVerboseOpt(f,k,n,extra) + else + parGosperVerboseOpt(f,k,n,fourth(args),extra) + ); + + +/* Non verbose version of Zeilberger's algorithm */ +Zeilberger([args]):= + block([f,k,n], + f:first(args), + k:second(args), + n:third(args), + if length(args)=3 then + ZeilbergerVerboseOpt(f,k,n,nonverbose) + else + parGosperVerboseOpt(f,k,n,fourth(args),nonverbose) + ); /* Short name macro for verbose parGosper */ |