There are two functions here, supporting the paper "Virtually Haken surgeries on punctured torus bundles" at xxx.lanl.gov/math.GT/0506443. See this paper for motivation, notation and definitions. To get started: Save file "bundletwist.gap". Start GAP Version 4.4.5 from same directory. Type: gap>Read("bundletwist.gap"); The first function is "Vhakendata(n)". Given an inetger n, this program looks for punctured torus bundles of complexity at most n are finitely covered by bundles with property VH. The output is a list of records. Example: gap> Vhakendata(2); #I You are creating a polynomial *over* a polynomial ring (i.e. in an #I iterated polynomial ring). Are you sure you want to do this? #I If not, the first argument should be the base ring, not a polynomial ring #I You are creating a polynomial *over* a polynomial ring (i.e. in an #I iterated polynomial ring). Are you sure you want to do this? #I If not, the first argument should be the base ring, not a polynomial ring #I You are creating a polynomial *over* a polynomial ring (i.e. in an #I iterated polynomial ring). Are you sure you want to do this? #I If not, the first argument should be the base ring, not a polynomial ring [ rec( old_word := f1^-1*f2, n_three := 4, n_four := 3, degree_of_cover := 12, word_for_f_to_the_n_three := _x1^-1*_x2*_x1*_x2*_x1^-1*_x2*_x1*_x2, word_for_f_to_the_n_four := _x1^-2*_x2^-1*_x1^-1*_x2^-1*_x1^-1, dx_exponent_for_H_three := 0, dx_exponent_for_H_four := -16, dy_cubed_exponent := 12, dy_to_the_fourth_exponent := -8, twist_for_beta_three := -3, twist_for_beta_four := 4, beta_three_one := [ 1, 3 ], beta_three_two := [ -1, -3 ], beta_four_one := [ 1, -12 ], beta_four_two := [ 1, -4 ], success := 1, alex3 := 0, alex3test := 0, alex4 := 0, alex4test := 0, test := true ) ] There is only one hyperbolic bundle of complexity at most 2: the figure eight knot complement. "old_word" represents the monodromy of the original bundle. "degree_of_cover" represents the degree of the initial cyclic cover. "beta..." represent the relevant slopes. "success" tells whether the method worked. A value of 1 means it did. In this example, since success = 1, and degree_of_cover = 12, we see that the 12-fold cover of the figure-eight knot complement has Property VH. The second function is "Vhakencheck". The input of this is a monodromy, represented by a list of integers from 1 to 4. The ouptut is a record as above. "1" stands for Dx "2" stands for Dy "3" stands for Dx^-1 "4" stands for Dy^-1 Example: gap> Vhakencheck([3,3,2,1,1,1,1,1,2,3,4]); #I You are creating a polynomial *over* a polynomial ring (i.e. in an #I iterated polynomial ring). Are you sure you want to do this? #I If not, the first argument should be the base ring, not a polynomial ring #I You are creating a polynomial *over* a polynomial ring (i.e. in an #I iterated polynomial ring). Are you sure you want to do this? #I If not, the first argument should be the base ring, not a polynomial ring #I You are creating a polynomial *over* a polynomial ring (i.e. in an #I iterated polynomial ring). Are you sure you want to do this? #I If not, the first argument should be the base ring, not a polynomial ring [ rec( old_word := f1^-2*f2*f1^5*f2*f1^-1*f2^-1, n_three := 4, n_four := 1, degree_of_cover := 4, word_for_f_to_the_n_three := _x1^-3*_x2^2*_x1*_x2^ 2*_x1^-1*_x2*_x1^-1*_x2^-1*_x1^-1*_x2*_x1^2, word_for_f_to_the_n_four := _x1^-3*_x2*_x1^2, dx_exponent_for_H_three := -3, dx_exponent_for_H_four := -4, dy_cubed_exponent := 5, dy_to_the_fourth_exponent := 4, twist_for_beta_three := 0, twist_for_beta_four := 0, beta_three_one := [ 1, -1 ], beta_three_two := [ -1, 1 ], beta_four_one := [ 1, -2 ], beta_four_two := [ 1, 0 ], success := 1, alex3 := 0, alex3test := 0, alex4 := 0, alex4test := 0, test := true ) ] This says that the bundle with monodromy f= Dx^-2 Dy Dx^5 Dy Dx^-1 Dy^-1 has a 4-fold cover with Property VH.