#C27.txt: Dr. Z.'s Experimental Mathematics Class, April 28, 2016 #Euler and Rogers-Ramanujan type partition identities #and still open Kanade-Russell ones Help:=proc(): print(` Pn(n) , Pnk(n,k), pn(n), pnk(n,k) , PnkD(n,k,EDS) `) : print(` PnD(n,EDS), pnkD(n,k,EDS), pnD(n,EDS), pnC(n,m,S) , MS(n) `): end: #Pn(n): the set of partitions of the integer n Pn:=proc(n) local k: option remember: { seq( op(Pnk(n,k)),k=1..n) }: end: #Pnk(n,k): the set of partitions of n with largest part k Pnk:=proc(n,k) local k1,S,S1, keith: option remember: if n<=0 then RETURN({}): fi: if k>n then RETURN({}): fi: if k=n then RETURN({[n]}): fi: S:={}: for k1 from 1 to k do S1:=Pnk(n-k,k1): S:=S union {seq( [k, op(keith)],keith in S1)}: od: S: end: #pn(n): the number of partitions of the integer n pn:=proc(n) local k: option remember: add(pnk(n,k),k=1..n): end: #pnk(n,k): the number of partitions of n with largest part k pnk:=proc(n,k) local k1,S: option remember: if n<=0 then RETURN(0): fi: if k>n then RETURN(0): fi: if k=n then RETURN(1): fi: add(pnk(n-k,k1),k1=1..k): end: #PnD(n,EDS): the set of partitions of the integer n #such that the difference between consecutive parts #must not belong to the set of non-negative integers EDS PnD:=proc(n,EDS) local k: option remember: { seq( op(PnkD(n,k,EDS)),k=1..n) }: end: #PnkD(n,k,EDS): the set of partitions of n with largest part k #excluding differences between conescutive parts belonging to EDS PnkD:=proc(n,k,EDS) local k1,S,S1, keith: option remember: if n<=0 then RETURN({}): fi: if k>n then RETURN({}): fi: if k=n then RETURN({[n]}): fi: S:={}: for k1 from 1 to k do if not member(k-k1,EDS) then S1:=PnkD(n-k,k1, EDS): S:=S union {seq( [k, op(keith)],keith in S1)}: fi: od: S: end: #pnD(n,EDS): the number of partitions of the integer n #such that the difference between consecutive parts #must not belong to the set of non-negative integers EDS pnD:=proc(n,EDS) local k: option remember: add(pnkD(n,k,EDS),k=1..n): end: #pnkD(n,k,EDS): the number of partitions of n with largest part k #excluding differences between conescutive parts belonging to EDS pnkD:=proc(n,k,EDS) local k1,S,S1: option remember: if n<=0 then RETURN(0): fi: if k>n then RETURN(0): fi: if k=n then RETURN(1): fi: S:=0: for k1 from 1 to k do if not member(k-k1,EDS) then S1:=pnkD(n-k,k1, EDS): S:=S+S1: fi: od: S: end: #pnC(n,m,S): the number of partitions of the integer n #such the parts must be such that part mod m must belong to S pnC:=proc(n,m,S) local k: option remember: add(pnkC(n,k,m,S),k=1..n): end: #pnkC(n,k,m,S): the number of partitions of n with largest part k #such the parts must be such that part mod m must belong to S pnkC:=proc(n,k,m,S) local k1,su: option remember: if not member(k mod m,S) then RETURN(0): fi: if n<=0 then RETURN(0): fi: if k>n then RETURN(0): fi: if k=n then RETURN(1): fi: su:=0: for k1 from 1 to k do if member(k1 mod m,S) then su:=su+pnkC(n-k,k1,m,S): fi: od: su: end: #MS(n): the number of the Kanade-Russell type partitions MS:=proc(n) local k1,k2: option remember: 1+add(add( MS1(n,k1,k2), k2=1..k1),k1=1..n): end: #MS1(n,k1,k2): the number of the Kanade-Russell type partitions #whose largest part is k1 and second-largest part is k2 MS1:=proc(n,k1,k2) local k3,su: option remember: su:=0: if n=k1+k2 then if k1-k2<=1 and k1+k2 mod 3<>0 then RETURN(0): else RETURN(1): fi: fi: if k1-k2<=1 then if k1+k2 mod 3<>0 then RETURN(0): fi: fi: add(MS1(n-k1,k2,k3),k3=1..min(k2,k1-3)): end: