read AllPrograms: read AllData: # reads B1[infinity,2,3] := [N1..N68] # B1[infinity,2,4] := [O1..O20] # B1[infinity,2,6] := [P1..P12] # Returns true if there is branching outside 0,1,infty. NotBelyi := proc(f, t) has( numer(normal(diff(f,t)/numer(f)/numer(normal(1-f)))), t) end: # This program uses the programs DegenerateValues and IsGapFree from the file equation2 from Section2. # If t = phi(s) then it checks that phi is a Belyi function, if not, it returns an error. # # Next, we take the point t0 = 2 and compute (in RootOf notation) all s-values with phi(s) = t0. # The number of such s-values equals degree(phi) because we checked that phi is a Belyi function. # Substituting these s (all denoted by one RootOf) into f we get deg(phi) f's in C(x). # We have to prove that these are deg(phi) Mobius-distinct f's which is equivalent to saying that # their almost-dessins are distinct. We do this by computing the 5 exceptional points for each f # with the FivePointPolynomial-program from Section 1, and then applying the I5-invariant from Section 7. # We check (with a sqrfree computation) that I5(FivePointPolynomial(f)) give deg(phi) distinct values, # which implies that the deg(phi) f's have Mobius-distinct sets of exceptional points, and are # hence Mobius-distinct themselves. # # After this computation we may conclude that we have deg(phi) distinct almost-dessins, at least, above t0 = 2. # # Since phi is a Mobius-transformation, if we take any other point t0 not in {0,1,infinity} then we # can give a continuous path from t=2 to t=t0 while avoiding any branchpoints of phi. The program checked # that f is gap-free so f is properly defined for any s above this path. This path continuously # deforms the deg(phi) f's above t = 2 to the f's above t = t0, and hence this continuously deforms the # almost-dessins above t=2 to those above t=t0. But the almost-dessins are discrete objects, and thus remain # constant along this path. Hence there are deg(phi) distinct almost-dessins above t = t0, for any t0 not # in {0,1,infinity}. # Check_DuplicateFree := proc(f, A) global x,s; local D,tv,P,s_above_2,v; D := DegenerateValues(f); if not member(infinity, D) then error "Other programs need code for the point s=infinity because it is not degenerate" fi; if not IsGapFree(f) then error "is not gap-free so some finite s-values need to be covered separately" fi; tv := tvalue(f); if NotBelyi(tv, t) then error "f is not duplicate-free" fi; P := FivePointPolynomial(f,x,A); if not member(degree(P,x), {4,5}) then error "The number of exceptional points is not 5" fi; s_above_2 := RootOf(tv - 2, s); v := sqrfree(evala(Norm(T-eval(I5(P,x), s = s_above_2))))[2]; if nops(v)<>1 then error "unexpected" elif v[1][2] > 1 then error "Failed to prove that f is duplicate-free because there are different s-values above t=2 with the same I5 invariant" fi; "OK" end: for m in [3,4,6] do A := infinity, 2, m; seq(Check_DuplicateFree(f, [A]), f = B1[A]); lprint("Tested", nops(B1[A]), "Belyi-(1) maps with", [A]) od: