diff --git a/.github/workflows/Documenter.yml b/.github/workflows/Documenter.yml index 22eebf92f14..40d3c2c4442 100644 --- a/.github/workflows/Documenter.yml +++ b/.github/workflows/Documenter.yml @@ -1,22 +1,34 @@ name: Documenter + on: push: branches: - master tags: '*' pull_request: + +permissions: + contents: write + actions: write + jobs: build: - runs-on: macos-latest + runs-on: ubuntu-latest + steps: - - uses: actions/checkout@v2 - - uses: julia-actions/setup-julia@latest + - uses: actions/checkout@v4 + + - uses: julia-actions/setup-julia@v3 with: version: '1.10' + + - uses: julia-actions/cache@v3 + - name: Install dependencies run: julia --project=docs/ -e 'using Pkg; Pkg.develop(PackageSpec(path=pwd())); Pkg.instantiate()' + - name: Build and deploy env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # For authentication with GitHub Actions token - DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} # For authentication with SSH deploy key - run: julia --project=docs/ docs/make.jl + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DOCUMENTER_KEY: ${{ secrets.DOCUMENTER_KEY }} + run: julia --project=docs/ docs/make.jl \ No newline at end of file diff --git a/README.md b/README.md index 904e643d4e5..6c40bb6afa4 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # TensorCategories.jl -[![][docs-dev-img]][docs-dev-url] [![][ga-img]][ga-url] [![][codecov_img]][codecov_url] [![Citation](https://img.shields.io/badge/Citation-arXiv%3A2406.13438-B31B1B?logo=arxiv)](https://arxiv.org/abs/2406.13438) +[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://tensorcategories.github.io/TensorCategories.jl/stable/) [![](https://img.shields.io/badge/docs-dev-blue.svg)](https://tensorcategories.github.io/TensorCategories.jl/dev/) [![](https://github.com/TensorCategories/TensorCategories.jl/actions/workflows/runtests.yml/badge.svg)](https://github.com/TensorCategories/TensorCategories.jl/actions/workflows/runtests.yml) [![](https://codecov.io/gh/TensorCategories/TensorCategories.jl/branch/master/graph/badge.svg?token=axGHAcozx5)](https://codecov.io/gh/TensorCategories/TensorCategories.jl) [![Citation](https://img.shields.io/badge/Citation-arXiv%3A2406.13438-B31B1B?logo=arxiv)](https://arxiv.org/abs/2406.13438) TensorCategories.jl is an open-source software package for computations with tensor categories, especially fusion categories. Built on the [Julia](https://julialang.org/) programming language and the [OSCAR](https://www.oscar-system.org/) computer algebra system, it is designed to closely follow the standard mathematical framework for tensor categories as presented, for example, in [Tensor Categories](https://math.mit.edu/~etingof/egnobookfinal.pdf) by Etingof, Gelaki, Nikshych, and Ostrik: objects, morphisms, tensor products, associators, and other categorical structures are represented as such, while concrete combinatorial descriptions, such as F-symbols, are also supported. The package supports exact symbolic computations over arbitrary base fields, including number fields and fields of positive characteristic, as well as numerical computations intended for applications in mathematical physics such as anyon models and conformal field theory. @@ -98,17 +98,3 @@ TensorCategories.jl was initiated by [**Ulrich Thiel**](https://agag-thiel.math. [**Gert Vercleyen**](https://gert-vercleyen.github.io/) contributed to the integration of the data from his [AnyonWiki](https://anyonwiki.github.io/). - - - - -[docs-stable-img]: https://img.shields.io/badge/docs-stable-blue.svg -[docs-stable-url]: https://tensorcategories.github.io/TensorCategories.jl/stable/ -[docs-dev-img]: https://img.shields.io/badge/docs-dev-blue.svg -[docs-dev-url]: https://tensorcategories.github.io/TensorCategories.jl/dev/ - -[codecov_img]: https://codecov.io/gh/TensorCategories/TensorCategories.jl/branch/master/graph/badge.svg?token=axGHAcozx5 -[codecov_url]: https://codecov.io/gh/TensorCategories/TensorCategories.jl - -[ga-img]: https://github.com/TensorCategories/TensorCategories.jl/actions/workflows/runtests.yml/badge.svg -[ga-url]: https://github.com/TensorCategories/TensorCategories.jl/actions/workflows/runtests.yml diff --git a/docs/Manifest.toml b/docs/Manifest.toml index c03b655939c..0ed038684b7 100644 --- a/docs/Manifest.toml +++ b/docs/Manifest.toml @@ -235,12 +235,6 @@ git-tree-sha1 = "3e22db924e2945282e70c33b75d4dde8bfa44c94" uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" version = "0.15.8" -[[deps.CodeTracking]] -deps = ["InteractiveUtils", "REPL", "UUIDs"] -git-tree-sha1 = "cfb7a2e89e245a9d5016b70323db412b3a7438d5" -uuid = "da1fd8a2-8d9e-5ec2-8556-3022fb5608a2" -version = "3.0.2" - [[deps.CodecZlib]] deps = ["TranscodingStreams", "Zlib_jll"] git-tree-sha1 = "962834c22b66e32aa10f7611c08c8ca4e20749a9" @@ -300,11 +294,6 @@ weakdeps = ["Dates", "LinearAlgebra"] [deps.Compat.extensions] CompatLinearAlgebraExt = "LinearAlgebra" -[[deps.Compiler]] -git-tree-sha1 = "382d79bfe72a406294faca39ef0c3cef6e6ce1f1" -uuid = "807dbc54-b67e-4c79-8afb-eafe4df6f2e1" -version = "0.1.1" - [[deps.CompilerSupportLibraries_jll]] deps = ["Artifacts", "Libdl"] uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" @@ -1018,12 +1007,6 @@ git-tree-sha1 = "c0c9b76f3520863909825cbecdef58cd63de705a" uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" version = "3.1.5+0" -[[deps.JuliaInterpreter]] -deps = ["CodeTracking", "InteractiveUtils", "Random", "UUIDs"] -git-tree-sha1 = "58927c485919bf17ea308d9d82156de1adf4b006" -uuid = "aa1ae85d-cabe-5617-a682-6adf51b2e16a" -version = "0.10.12" - [[deps.JuliaSyntaxHighlighting]] deps = ["StyledStrings"] uuid = "ac6e5ff7-fb65-4e79-a425-ec3bc9c03011" @@ -1157,12 +1140,6 @@ version = "0.12.173" NNlib = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" -[[deps.LoweredCodeUtils]] -deps = ["CodeTracking", "Compiler", "JuliaInterpreter"] -git-tree-sha1 = "5d4278f755440f70648d80cc6225f51e78e94094" -uuid = "6f1432cf-f94c-5a45-995e-cdbf5db27b0b" -version = "3.5.1" - [[deps.METIS_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] git-tree-sha1 = "2eefa8baa858871ae7770c98c3c2a7e46daba5b4" @@ -1573,16 +1550,6 @@ git-tree-sha1 = "62389eeff14780bfe55195b7204c0d8738436d64" uuid = "ae029012-a4dd-5104-9daa-d747884805df" version = "1.3.1" -[[deps.Revise]] -deps = ["CodeTracking", "FileWatching", "InteractiveUtils", "JuliaInterpreter", "LibGit2", "LoweredCodeUtils", "OrderedCollections", "Preferences", "REPL", "UUIDs"] -git-tree-sha1 = "f6499c1b9548d4914078936b60bae001c8a6003f" -uuid = "295af30f-e4ad-537b-8983-00126c2a3abe" -version = "3.14.4" -weakdeps = ["Distributed"] - - [deps.Revise.extensions] - DistributedExt = "Distributed" - [[deps.Rotations]] deps = ["LinearAlgebra", "Quaternions", "Random", "StaticArrays"] git-tree-sha1 = "5680a9276685d392c87407df00d57c9924d9f11e" @@ -1830,8 +1797,8 @@ uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" version = "1.10.0" [[deps.TensorCategories]] -deps = ["Artifacts", "Images", "InteractiveUtils", "LazyArtifacts", "Oscar", "Revise", "SparseArrays", "StyledStrings"] -path = ".." +deps = ["Artifacts", "Images", "InteractiveUtils", "LazyArtifacts", "Oscar", "SparseArrays", "StyledStrings"] +path = "/home/thiel/TensorCategories.jl-docs" uuid = "258c694e-7338-4d4d-b524-4851272a75cf" version = "0.5.5" diff --git a/docs/Project.toml b/docs/Project.toml index cb79a00b0ff..f043e1c1d7d 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -5,9 +5,6 @@ Oscar = "f1435218-dba5-11e9-1e4d-f1a5fab5fc13" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" TensorCategories = "258c694e-7338-4d4d-b524-4851272a75cf" -[sources] -TensorCategories = {path = ".."} - [compat] Documenter = "1.15.0" DocumenterCitations = "1.4.1" diff --git a/docs/make.jl b/docs/make.jl index e234a5e6061..644a944b4a9 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -8,7 +8,7 @@ makedocs( modules = [TensorCategories], warnonly = true, format = Documenter.HTML( - canonical = "https://juliadocs.github.io/Documenter.jl/stable/", + canonical = "https://TensorCategories.github.io/TensorCategories.jl/stable/", prettyurls = !("local" in ARGS), collapselevel=1, mathengine = MathJax3(Dict( @@ -65,5 +65,6 @@ makedocs( deploydocs( - repo = "github.com/FabianMaeurer/TensorCategories.jl.git", + repo = "github.com/TensorCategories/TensorCategories.jl.git", + devbranch = "master", ) diff --git a/docs/src/index.md b/docs/src/index.md index 7103bb97b42..26eb6622037 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1,37 +1,100 @@ # TensorCategories.jl -TensorCategories.jl is a software package based on the programming language [Julia](https://julialang.org) and the open-source computer algebra system [Oscar.jl](https://github.com/oscar-system/Oscar.jl) for computations with tensor categories. +[![Citation](https://img.shields.io/badge/Citation-arXiv%3A2406.13438-B31B1B?logo=arxiv)](https://arxiv.org/abs/2406.13438) + +TensorCategories.jl is an open-source software package for computations with tensor categories, especially fusion categories. Built on the [Julia](https://julialang.org/) programming language and the [OSCAR](https://www.oscar-system.org/) computer algebra system, it is designed to closely follow the standard mathematical framework for tensor categories as presented, for example, in [Tensor Categories](https://math.mit.edu/~etingof/egnobookfinal.pdf) by Etingof, Gelaki, Nikshych, and Ostrik: objects, morphisms, tensor products, associators, and other categorical structures are represented as such, while concrete combinatorial descriptions, such as F-symbols, are also supported. The package supports exact symbolic computations over arbitrary base fields, including number fields and fields of positive characteristic, as well as numerical computations intended for applications in mathematical physics such as anyon models and conformal field theory. + +Current highlights include: + +* A general, extensible framework for implementing categories together with additional structures, such as additive, linear, abelian, monoidal, tensor, and fusion structures. + +* Support for skeletal fusion categories described by F-symbols, including exact and numerical access to F-symbols, R-symbols, pivotal data, and related invariants. + +* Integration of fusion-category data from the [AnyonWiki](https://anyonwiki.github.io/), providing access to a large collection of fusion categories. + +* A generic algorithm for computing Drinfeld centers of fusion categories, producing explicit central objects with half-braidings rather than only abstract equivalence classes; see [arXiv:2406.13438](https://arxiv.org/abs/2406.13438). + +* Computation of the Drinfeld centers, including F-symbols and R-symbols, for all 279 multiplicity-free fusion categories up to rank 5; the results are stored in our [TensorCategoriesDatabase](https://github.com/TensorCategories/TensorCategoriesDatabase). + +* Explicit computation of F-symbols, R-symbols, and pivotal coefficients for the Drinfeld center of the Haagerup subfactor; see [arXiv:2601.20012](https://arxiv.org/abs/2601.20012). + + +## Showcase + +Here is a showcase example computing the center of the Ising fusion category over the field $\mathbb{Q}(\sqrt{2})$. The computation shows that the center is *not* split over $\mathbb{Q}(\sqrt{2})$. + +```julia-repl +julia> using TensorCatgories, Oscar + +julia> K,r2 = quadratic_field(2) +(Real quadratic field defined by x^2 - 2, sqrt(2)) + +julia> simples(C) +3-element Vector{SixJObject}: + πŸ™ + Ο‡ + X + +julia> Z = center(C) +Drinfeld center of Ising fusion category + +julia> S = simples(Z) +5-element Vector{CenterObject}: + Central object: πŸ™ + Central object: πŸ™ + Central object: πŸ™ βŠ• Ο‡ + Central object: 2β‹…Ο‡ + Central object: 4β‹…X + +julia> H = End(S[4]) +Vector space of dimension 2 over Real quadratic field defined by x^2 - 2. +``` ## Installation -You need to have Julia installed. For reliable results Julia version at least 1.10 is required. To use TensorCategories -do the following: +You need to have [Julia](https://julialang.org/downloads/) installed. To install TensorCategories.jl do the following: ```julia-repl julia> import Pkg -julia> Pkg.add("TensorCategories.jl") +julia> Pkg.add("TensorCategories") ``` -## Usage +This will automatically install all dependencies like [OSCAR](https://www.oscar-system.org/). + -To use TensorCategories the structures from the [OSCAR-System](https://github.com/oscar-system/Oscar.jl) are required. Here a minimal usage example. +## How to cite -```jldoctest -using TensorCategories; -I = ising_category() -C = center(I) -S = smatrix(C) +If TensorCategories.jl contributes to your research, please cite the paper that introduced the software: -# output -[ 1 1 2 2 4*√2] -[ 1 1 2 2 -4*√2] -[ 2 2 0 -4 0] -[ 2 2 -4 4 0] -[4*√2 -4*√2 0 0 0] +```bibtex +@misc{MaeurerThiel2024ComputingCenter, + author = {M{\"a}urer, Fabian and Thiel, Ulrich}, + title = {Computing the center of a fusion category}, + year = {2024}, + eprint = {2406.13438}, + archivePrefix = {arXiv}, + primaryClass = {math.RT}, + doi = {10.48550/arXiv.2406.13438} +} ``` -## Acknowledgements +The software itself is archived on Zenodo and can be cited as follows: + +```bibtex +@software{Maeurer2026TensorCategories, + author = {M{\"a}urer, Fabian}, + title = {{TensorCategories.jl}}, + year = {2026}, + publisher = {Zenodo}, + doi = {10.5281/zenodo.18760250}, + url = {https://doi.org/10.5281/zenodo.18760250} +} +``` + + +## Credits and Acknowledgements + +TensorCategories.jl was initiated by [**Ulrich Thiel**](https://agag-thiel.math.rptu.de/math/) (RPTU University Kaiserslautern-Landau) within his project A20 "Towards unipotent character sheaves associated to Coxeter groups" (2020–2024) of the SFB-TRR 195 ["Symbolic Tools in Mathematics and their Application"](https://www.computeralgebra.de/sfb/), funded by the German Research Foundation (DFG). The package was created and developed by **Fabian MΓ€urer** as part of his Master's and PhD work under Thiel's supervision (2021–2026). Its development is currently supported by Thiel's project A20 "Categorical representation theory" (2024–2028) in the SFB-TRR 195. Additional support is provided by the Forschungsinitiative "SymbTools" of the state of Rheinland-Pfalz, in which Thiel is one of the project leaders. + +[**Gert Vercleyen**](https://gert-vercleyen.github.io/) contributed to the integration of the data from his [AnyonWiki](https://anyonwiki.github.io/). -This project was started under supervision of [Prof. Ulrich Thiel](https://ulthiel.com/math/) (University of Kaiserslautern). This work is a -contribution to the SFB-TRR 195 'Symbolic Tools in Mathematics and their -Application' of the German Research Foundation (DFG).