#C19.txt: March 31, 2021. Maple code for Lecture 19, Using the umbral approach to count Condorcet vote-profile scenarios Help19:=proc(): print(`Umb1(M,var), Umb(P,var), Zs(N) `): end: #Umb1(M,var): inputs a MONOMIAL M in the list of variables var and applies the "umbra" #c*var[1]^a1*...*var[k]^ak->c*(a1+...+ak)!/(a1!*..*ak!) Umb1:=proc(M,var) local f,d,i,c: for i from 1 to nops(var) do d[i]:=degree(M,var[i]): od: c:=normal(M/mul(var[i]^d[i],i=1..nops(var))): if {seq(normal(diff(c,var[i])),i=1..nops(var))}<>{0} then RETURN(FAIL): fi: c*add(d[i],i=1..nops(var))!/mul(d[i]!,i=1..nops(var)): end: #Umb(P,var): applying the above umbra to the polynomial P #Debugged after class Umb:=proc(P,var) local P1,i: if P=0 then RETURN(0): fi: P1:=expand(P): if not type(P1,`+`) then RETURN(Umb1(P,var)): fi: add(Umb1(op(i,P1),var),i=1..nops(P1)): end: #Zs(N): The first N terms of the sequence: number of vote-profiles with the Condorcet scenario with v voters Zs:=proc(N) local f,var,i,L: f:=(1+t^3*x123*x231*x312)*t^3*x312*x123*x231/ ((1-t^2*x123*x321)*(1-t^2*x213*x312)*(1-t^2*x312*x123)*(1-t^2*x132*x231)*(1-t^2*x123*x231)*(1-t^2*x231*x312)); f:=taylor(f,t,N+4): var:=[x123,x132,x213,x231,x312,x321]: L:=[seq(expand(coeff(f,t,i)),i=1..N)]: [seq(2*Umb(L[i],var),i=1..nops(L))]: end: