Checks for triangulations   

> # check planar (oeis says ok)
seq(triFacesGenus(k,0),k=1..10);
 

4, 32, 336, 4096, 54912, 786432, 11824384, 184549376, 2966845440, 48855252992 (4.2.1)
 

> # check projective plane (oeis says ok)
seq(triFacesGenus(k,1/2),k=1..10);;
 

9, 118, 1773, 28650, 484578, 8457708, 151054173, 2745685954, 50606020854, 943283037684 (4.2.2)
 

> # check torus+klein
#(oeis says
kleinOEIS := [ 6, 174, 4236, 97134, 2163636, 47394444, 1027091736, 22094309934, 472740763236, 10074173087364]:  
torusOEIS := [1, 28, 664, 14912, 326496, 7048192, 150820608, 3208396800, 67968706048, 1435486650368, 30246600953856, 636154755940352, 13360333295173632, 280258138588839936, 5873204471357374464, 122980760637407232000, 2573349967992101142528, 53815038103588370907136]:
seq(%[i]+%%[i],i=1..8);
seq(triFacesGenus(k,1),k=1..8);
 

 

7, 202, 4900, 112046, 2490132, 54442636, 1177912344, 25302706734
7, 202, 4900, 112046, 2490132, 54442636, 1177912344, 25302706734 (4.2.3)
 

> ### Check one-vertex triangulations (dual = one-face cubic)

# Known formulas for 1-face rooted precubic maps of genus g with m non-root leaves
# ori: orientable, nori=not orientable

# explicit formula from [Chapuy PTRF 2010]
ori:=proc(g,m);  
if not g::integer then 0;
else 1/2^g/g!*(m+3*g)!/(m)!/(3!)^g*eval(subs(N=m+3*g-1,1/(N+1)*binomial(2*N,N))):
fi:
end:

# Main recurrence from [Bernardi Chapuy 2012]
nori:=proc(g,m);
if g<0 then return 0 fi:
if g=1/2 then return 4^(m); fi:
if g=0 then 0;
else   1/(2*g-1)* (4*binomial(m+3,3)*nori(g-1,m+3)+3*binomial(m+3,3)*ori(g-1,m+3));  fi;
end:

seq(ori(g/2,0)+nori(g/2,0),g=1..12);
seq(tri(2*g/2-1,g/2),g=1..12);
 

 

1, 7, 128, 3885, 163840, 8878870, 587202560, 45877917085, 4133906022400, 422063823431250, 48151737348915200, 6070930938149327250
0, 7, 128, 3885, 163840, 8878870, 587202560, 45877917085, 4133906022400, 422063823431250, 48151737348915200, 6070930938149327250 (4.2.4)
 

> #Check: total number of maps of size n, regardless of genus or other parameters
# we make an exponential generating function
add(triFaces(n)*t^(n)/12/n,n=1..15):
series(exp(subs(u=1,z=1,%)),t=0,15);
# This can be encoded by gluing matchings and we have an explicit formula:
1+add((6*n)!/(2*n)!/(3*n)!/4^n/3^(2*n)*t^(n),n=1..15):
series(%-%%,t=0,48);
 

 

series(`+`(1, `*`(`/`(5, 3), `*`(t)), `*`(`/`(385, 18), `*`(`^`(t, 2))), `*`(`/`(85085, 162), `*`(`^`(t, 3))), `*`(`/`(37182145, 1944), `*`(`^`(t, 4))), `*`(`/`(5391411025, 5832), `*`(`^`(t, 5))), `*`...
series(`+`(1, `*`(`/`(5, 3), `*`(t)), `*`(`/`(385, 18), `*`(`^`(t, 2))), `*`(`/`(85085, 162), `*`(`^`(t, 3))), `*`(`/`(37182145, 1944), `*`(`^`(t, 4))), `*`(`/`(5391411025, 5832), `*`(`^`(t, 5))), `*`...
series(`+`(1, `*`(`/`(5, 3), `*`(t)), `*`(`/`(385, 18), `*`(`^`(t, 2))), `*`(`/`(85085, 162), `*`(`^`(t, 3))), `*`(`/`(37182145, 1944), `*`(`^`(t, 4))), `*`(`/`(5391411025, 5832), `*`(`^`(t, 5))), `*`...
series(`+`(1, `*`(`/`(5, 3), `*`(t)), `*`(`/`(385, 18), `*`(`^`(t, 2))), `*`(`/`(85085, 162), `*`(`^`(t, 3))), `*`(`/`(37182145, 1944), `*`(`^`(t, 4))), `*`(`/`(5391411025, 5832), `*`(`^`(t, 5))), `*`...
series(`+`()+O(`^`(t, 15)),t,15) (4.2.5)