This program is a calculator for the multi-dimensional Thompson groups Vn. More detailed documentation is available is on Github as Javadoc (http://github.com/romwell/nvTrees). Author: Roman Kogan; contact: romwell@gmail.com Instructions for usage: type a string to evaluate and hit Enter. Use scrollbars on the left to control zoom and scale; the boxes on the right contain command history and list of variables. Clicking on a variable name or a command in the history box brings it up in the command line. Usage examples (note: type the expressions exactly - extra spaces may be a problem): Define the generators of the Thompson group F: X0={11000,10100,1 2 3} X1={1011000,1010100,1 2 3 4} Multiplication (left action, corresponding to function composition X0 o X1) X0*X1 Inverse !X0 X0^-1 Power X0^(-3) Conjugation X1^(X0^-1) X1^X0 Commutator X1#X0 Growth (note the single space!) growth [A,B,3] Cyclic permutation as an element of V X={1100100,1100100,2 3 4 1} Baker's map as an element of 2V X={100,200,1 2} Do something with the result of last operation ans^2 Application commands: \save Saves session to default filename ~default.nvt \save fname Saves session to fname.nvt \load Loads session from default filename ~default.nvt (this happens at the start of the program if the file exists) \load fname Loads session from fname.nvt : loads history and re-runs it \qload Quick load from ~default.nvt: loads history and variable values; doesn't re-run history \qload fname Quick load from fname.nvt: loads history and variable values; doesn't re-run history \clear Clear screen \reset Resets the program \pattern Enables or disables pattern display Expression Commmands: expression Evaluates the expression and displays it X=expression Evaluates the expression and assigns it to a variable X Expression may contain the following: ans The result of last calculation is stored here x={treepair format string} See treepair format below (any expression involving Ex.: $((A#!B)^(C*D)) parentheses, variables and operators) Unary operators: ! inverse $ reduced form @ left-side-to-grid form Binary Operators: * multiplication A*B (left action, corresponding to function composition A o B) ^ conjugation B*A*B^-1 ^ power A^integer # commutator A*B*A^-1*B^-1 Other commands: growth Computes the growth function of a group generated by a given list of elements Syntax: growth[x1, x2, x3,..,xk, n] where x1, x2, ..., xk are variables previously defined, and n is a positive integer -->computes the size of balls of sizes 1,2,3,..,n semi Same syntax and usage as growth, but computes growth of the semigroup instead. Tree Pair Format: random N C Random tree pair with N leaves in dimension C (labels are in 1,2,...C) left_tree,right_tree,permutation See Tree format below for left_tree, right_tree. See Permutation format below for permutation right_tree can be replaced with “same”, then the right tree will be made the same as the left tree. left_tree,right_tree A tree pair (left_tree, right_tree) with identity permutation Tree format: random N C Random tree with N leaves in dimension C (labels are in 1,2,...C) DFS of the tree as a sring Values at nodes: colors; values at leaves: 0. Example: 10200 corresponds to the tree 1 / \ 0 2 / \ 0 0 Permutation format: permutation of numbers from 1 to n Ex.: 1 5 4 2 7 6 3 is a permutation of numbers from 1 to 7 random Random permutation id Identity permutation Most of the code was written as a part of Collin Bleak's REU in 2008.