Code Monkey home page Code Monkey logo

thompsons-group's Introduction

Thompsons-group

This repository contains a method for computing the normal form of an element in Thompson's group F.

Definition: Thompson's group F is the group generated by infinitely many generators x_0, x_1, x_2, ... satisfying the relations
x_k^{-1} x_n x_k = x_{n+1} for all k<n.

Every element g of F can be expressed uniquely in the its normal form, i.e.
g = x_0^{a_0} ... x_n^{a_n} x_n^{-b_n} ... x_n^{-b_0} ,
where a_0, ..., a_n, b_0, ..., b_n are non-negative integers, exactly one of a_n, b_n is non-zero, and:
(a_i and b_i not equal 0) implies (a_{i+1} not equal 0 or b_{i+1} not equal 0) ,
for all i.

The normal form can be computed via an algorithm from the article "Thompson's group and public key cryptography" by Shpilrain and Ushakov, availble at http://www.sci.ccny.cuny.edu/~shpil/thomcryp.pdf

In Thompsonsgroup.py, this algorithm is implemented using Python.

Example usage

We represent words in Thompson's group as a list of 2-lists, each 2-list consisting of an index (in {0,1,2,...}) and a number in {1,-1} (the exponent). So, the word x_1^2 x_3 x_2^{-1} will be represented as

[ [1,1], [1,1], [1,3], [2,-1] ]

To compute the normal form of this element, enter

normalForm([ [1,1], [1,1], [1,3], [2,-1] ])

thompsons-group's People

Contributors

krogager avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.