Nicolas M. Thiéry
LRI, Université Paris Sud
Run this live on binder:
Balthazar is starting a PhD in modular representation theory of semigroups
Built from many tools in our toolkit :
import sage_annotations
from mygap import mygap
mygap.LoadPackage("Semigroups");
import sage_semigroups
import sage_combinat_widgets
from sage_explorer import explore
from sage_explorer.sage_explorer import Settings
Settings.add_property('cardinality', predicate=Groups().Finite().__contains__)
Settings.add_property('conjugacy_classes', predicate=Groups().Finite().__contains__)
Settings.add_property('multiplication_table', predicate=Groups().Finite().__contains__)
%display unicode_art
tensor.symbol = " ⊗ "
%run style/odk.py
T5 = mygap.FullTransformationSemigroup(5)
T3 = mygap.FullTransformationSemigroup(3)
graph = T3.cayley_graph()
graph.set_latex_options(format="dot2tex")
view(graph)
from francy_widget import FrancyWidget
from networkx import DiGraph
g = DiGraph()
g.add_edges_from([(e[0], e[1]) for e in graph.edges()])
FrancyWidget(g)
T5.cardinality()
3125
d_classes = T5.d_classes()
for d_class in d_classes:
print(d_class)
<Green's D-class: IdentityTransformation> <Green's D-class: Transformation( [ 1, 2, 3, 4, 1 ] )> <Green's D-class: Transformation( [ 1, 1, 2, 3, 1 ] )> <Green's D-class: Transformation( [ 3, 1, 3, 1, 3 ] )> <Green's D-class: Transformation( [ 1, 1, 1, 1, 1 ] )>
G = d_classes[1].schutzenberger_group()
G
Group([ (1,2,3,4), (1,2) ])
reps = G.irreducible_representations(GF(3))
for rho in reps:
display([matrix(rho(g).gap()) for g in G.group_generators()])
[ (1), (1) ]
[ (2), (2) ]
⎡ ⎛2 1 0⎞ ⎛0 0 1⎞ ⎤ ⎢ ⎜1 1 0⎟ ⎜0 2 0⎟ ⎥ ⎣ ⎝1 0 1⎠, ⎝1 0 0⎠ ⎦
⎡ ⎛2 1 1⎞ ⎛0 1 1⎞ ⎤ ⎢ ⎜0 0 1⎟ ⎜1 0 2⎟ ⎥ ⎣ ⎝2 0 0⎠, ⎝0 0 1⎠ ⎦
all( [ rho(g)*rho(h) == rho(g*h) for g in G for h in G ] )
True
One of ODK case studies for interfacing with other systems
libgap used to be a fragile hard to maintain fork of GAP
Volker Braun
libgap is now a standard feature of GAP
M. Horn, A. Konovalov , M. Pfeiffer , J. Demeyer , E. M. Bray , N. Thiéry , D. Pasechnik
GAP-Sage Days 2016, 2017, 2018
Made possible by GAP's build system refactoring
M. Horn, A. Konovalov , ...
A major step for sustainable packaging of GAP and Sage
One of ODK case study for extracting independent low-level libraries C++
libsemigroups API design:
J. Mitchell with F. Hivert and N. Thiéry: Cernay 2017, 2018
libsemigroups Python bindings
J. Mitchell and N. Thiéry : Edinburgh, 2017, Cernay 2017, 2018
libsemibroups usable directly in Jupyter thanks to xeus-cling
S. Corlay, J. Mabile, L. Gouarin
libsemigroups packaging
J. Mitchell and N. Thiéry : Jupyter for Mathematics Workshop, Edinburgh, 2017
A = T5.algebra(QQ); A
Algebra of <full transformation monoid of degree 5> over Rational Field
A.an_element() ^ 3
58*B + 74* Transformation( [ 4, 5, 1, 2, 3 ] ) B + 72*B Transformation( [ 3, 4, 5, 1, 2 ] ) Transformation( [ 2, 3, 4, 5, 1 ] ) + 76*1 + 63*B Transformation( [ 5, 1, 2, 3, 4 ] )
@semantic(mmt="Group", variant="multiplicative")
class Groups:
class ParentMethods:
@semantic(gap="GeneratorsOfGroup", codomain=Family[Self])
@abstract_method
def group_generators(self):
pass
explore(G)
SageExplorer(children=(VBox(children=(ExplorerTitle(children=(MathTitle(value='Exploring: Group([ (1,2,3,4), (…
StandardTableaux(10).random_element()
┌───┬───┬───┬────┐ │ 1 │ 3 │ 6 │ 10 │ ├───┼───┼───┴────┘ │ 2 │ 5 │ ├───┼───┤ │ 4 │ 9 │ ├───┼───┘ │ 7 │ ├───┤ │ 8 │ └───┘
Sym = SymmetricFunctions(QQ['t']);
s = Sym.s()
s[3,1].coproduct()
1 ⊗ s + s ⊗ s + s ⊗ s + s ⊗ s + s ⊗ s + s ⊗ s + ┌┬┬┐ ┌┐ ┌┬┐ ┌┐ ┌┬┬┐ ┌┐ ┌┬┐ ┌┬┐ ┌┐ ┌┬┐ ┌┬┐ ├┼┴┘ └┘ ├┼┘ └┘ └┴┴┘ ├┤ └┴┘ └┴┘ ├┤ └┴┘ └┴┘ └┘ └┘ └┘ └┘ s ⊗ s + s ⊗ s + s ⊗ 1 ┌┬┐ ┌┐ ┌┬┬┐ ┌┐ ┌┬┬┐ ├┼┘ └┘ └┴┴┘ └┘ ├┼┴┘ └┘ └┘
@interact
def f(p1 = Partition([2,1])._widget_()):
return s[p1].coproduct()
Interactive function <function f at 0x7fe269543950> with 1 widget p1: GridViewWidget(value=[2, 1], children=…
list(RibbonTableaux([[5,4,3],[2,1]], [2,1], 3))
⎡ . . 0 0 0 . . 1 0 0 . . 0 0 0 ⎤ ⎢ . 0 0 2 . 0 0 0 . 1 0 1 ⎥ ⎣ 1 0 1 , 1 0 2 , 2 0 0 ⎦
Sym.llt(3)
level 3 LLT polynomials over Univariate Polynomial Ring in t over Rational Field
Balthazar has at his fingertips the best computational tools developed by different math communities, all from a single Virtual Research Environment:
And:
Hurdles:
Balthazar can:
Balthazar can use his Basic Lab Skills to:
Prepare proper computational logbooks
Track his work with version control (nbdime )
Turn his notebooks into slideshows
Publish his work on a public repository, e.g. on GitHub
Document the software dependencies, e.g. as a Dockerfile
Make it easy for others to reuse and reproduce, e.g. on Binder
Run his computations elsewhere, e.g. on a powerful VRE
Use live-collaboration , e.g. to get help from his advisor!
Modularity, ease of installation and deployment, sustainability: