| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Math.Combinat.Groups.Thompson.F
Contents
Description
Thompson's group F.
See eg. https://en.wikipedia.org/wiki/Thompson_groups
Based mainly on James Michael Belk's PhD thesis "THOMPSON'S GROUP F"; see http://www.math.u-psud.fr/~breuilla/Belk.pdf
- data TDiag = TDiag {}
- mkTDiag :: T -> T -> TDiag
- mkTDiagDontReduce :: T -> T -> TDiag
- isValidTDiag :: TDiag -> Bool
- isPositive :: TDiag -> Bool
- isReduced :: TDiag -> Bool
- x0 :: TDiag
- x1 :: TDiag
- xk :: Int -> TDiag
- identity :: TDiag
- positive :: T -> TDiag
- inverse :: TDiag -> TDiag
- equivalent :: TDiag -> TDiag -> Bool
- reduce :: TDiag -> TDiag
- treeCaretList :: T -> [Int]
- removeCarets :: [Int] -> T -> T
- compose :: TDiag -> TDiag -> TDiag
- composeDontReduce :: TDiag -> TDiag -> TDiag
- extensionToCommonTree :: T -> T -> ([T], [T])
- subdivision1 :: T -> [Rational]
- subdivision2 :: T -> [(Rational, Rational)]
- data Tree a
- graft :: Tree (Tree a) -> Tree a
- listGraft :: [Tree a] -> Tree b -> Tree a
- type T = Tree ()
- leaf :: T
- branch :: T -> T -> T
- caret :: T
- treeNumberOfLeaves :: Tree a -> Int
- treeWidth :: Tree a -> Int
- enumerate_ :: Tree a -> Tree Int
- enumerate :: Tree a -> (Int, Tree Int)
- rightVine :: Int -> T
- leftVine :: Int -> T
- flipTree :: Tree a -> Tree a
- toBinTree :: Tree a -> BinTree a
- fromBinTree :: BinTree a -> Tree a
- pattern Lf :: Tree ()
- pattern Br :: Tree t -> Tree t -> Tree t
- pattern Ct :: Tree ()
- pattern X0 :: TDiag
- pattern X1 :: TDiag
- asciiT :: T -> ASCII
- asciiT' :: Bool -> T -> ASCII
- asciiTLabels :: T -> ASCII
- asciiTLabels' :: Bool -> T -> ASCII
- asciiTDiag :: TDiag -> ASCII
Tree diagrams
A tree diagram, consisting of two binary trees with the same number of leaves, representing an element of the group F.
Constructors
| TDiag | |
mkTDiagDontReduce :: T -> T -> TDiag Source
Creates a tree diagram, but does not reduce it.
isValidTDiag :: TDiag -> Bool Source
isPositive :: TDiag -> Bool Source
A positive diagram is a diagram whose bottom tree (the range) is a right vine.
inverse :: TDiag -> TDiag Source
Swaps the top and bottom of a tree diagram. This is the inverse in the group F. (Note: we don't do reduction here, as this operation keeps the reducedness)
equivalent :: TDiag -> TDiag -> Bool Source
Decides whether two (possibly unreduced) tree diagrams represents the same group element in F.
Reduction of tree diagrams
reduce :: TDiag -> TDiag Source
Reduces a diagram. The result is a normal form of an element in the group F.
treeCaretList :: T -> [Int] Source
List of carets at the bottom of the tree, indexed by their left edge position
removeCarets :: [Int] -> T -> T Source
Remove the carets with the given indices (throws an error if there is no caret at the given index)
Composition of tree diagrams
compose :: TDiag -> TDiag -> TDiag Source
If diag1 corresponds to the PL function f, and diag2 to g, then compose diag1 diag2
will correspond to (g.f) (note that the order is opposite than normal function composition!)
This is the multiplication in the group F.
composeDontReduce :: TDiag -> TDiag -> TDiag Source
Compose two tree diagrams without reducing the result
extensionToCommonTree :: T -> T -> ([T], [T]) Source
Given two binary trees, we return a pair of list of subtrees which, grafted the to leaves of the first (resp. the second) tree, results in the same extended tree.
Subdivions
subdivision1 :: T -> [Rational] Source
Returns the list of dyadic subdivision points
subdivision2 :: T -> [(Rational, Rational)] Source
Returns the list of dyadic intervals
Binary trees
A (strict) binary tree with labelled leaves (but unlabelled nodes)
treeNumberOfLeaves :: Tree a -> Int Source
enumerate_ :: Tree a -> Tree Int Source
Enumerates the leaves a tree, starting from 0
enumerate :: Tree a -> (Int, Tree Int) Source
Enumerates the leaves a tree, and also returns the number of leaves
Conversion to/from BinTree
fromBinTree :: BinTree a -> Tree a Source
Pattern synonyms
ASCII
asciiT' :: Bool -> T -> ASCII Source
Draws a binary tree; when the boolean flag is True, we draw upside down
asciiTLabels :: T -> ASCII Source
Draws a binary tree, with all leaves at the same (bottom) row, and labelling the leaves starting with 0 (continuing with letters after 9)
asciiTLabels' :: Bool -> T -> ASCII Source
When the flag is true, we draw upside down
asciiTDiag :: TDiag -> ASCII Source
Draws a tree diagram