{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## The locus $uMPS(D,d,N)$ of uniform matrix product states is defined as the constructible image of the polynomial map $$ (\\mathbb{C}^{D \\times D})^d \\to (\\mathbb{C}^d)^{\\otimes N}, (M_0, \\ldots, M_{d-1}) \\mapsto \\sum_{0 \\leq i_1, \\ldots, i_N \\leq d-1} tr(M_{i_1} \\cdots M_{i_N}) e_{i_1} \\otimes \\cdots \\otimes e_{i_N} \\mbox{.}$$\n",
"## Here we consider the case $(D,d,N) = (2,2,3)$.\n",
"\n",
"Our implementation $\\mathtt{ConstructibleImage}$ finishes in less than 15 seconds and outperforms\n",
"* $\\mathtt{totalImage}$ (Macaulay2 package $\\mathtt{TotalImage}$ [HMS18,CMS])\n",
"* $\\mathtt{grobcov}$ (Singular package $\\mathtt{grobcov.lib}$ [MW10])\n",
"* $\\mathtt{PolynomialMapImage}$ ($\\mathsf{Maple}$ package $\\mathtt{RegularChains}$ [CGL+07])\n",
"* $\\mathtt{Comprehensive}$ ($\\mathsf{Maple}$ package $\\mathtt{AlgebraicThomas}$ [BGLHR12])\n",
"\n",
"\n",
"[HMS18] Corey Harris, Mateusz Michałek, and Emre Can Sertöz, Computing images of polynomial maps, (arXiv:1801.00827), 2018.\n",
"\n",
"[CMS] Adam Czaplin ́ski, Mateusz Michałek, and Tim Seynnaeve, Uniform matrix product states from an algebraic geometer’s point of view.\n",
"\n",
"[MW10] Antonio Montes and Michael Wibmer, Gröbner bases for polynomial systems with parameters, J. Symbolic Comput. 45 (2010), no. 12, 1391–1425. MR 2733386\n",
"\n",
"[CGL+07] Changbo Chen, Oleg Golubitsky, François Lemaire, Marc Moreno Maza, and Wei Pan, Com- prehensive triangular decomposition, Computer Algebra in Scientific Computing (Berlin, Heidelberg) (Victor G. Ganzha, Ernst W. Mayr, and Evgenii V. Vorozhtsov, eds.), Springer Berlin Heidelberg, 2007, pp. 73–101.\n",
"\n",
"[BGLHR12] Thomas Bächler, Vladimir Gerdt, Markus Lange-Hegermann, and Daniel Robertz, Algorithmic Thomas decomposition of algebraic and differential systems, J. Symbolic Comput. 47 (2012), no. 10, 1233–1266, (arXiv:1108.0817). MR 2926124"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CapAndHomalg v\u001b[32m1.5.8\u001b[39m\n",
"Imported OSCAR's components GAP and Singular_jll\n",
"Type: ?CapAndHomalg for more information\n"
]
}
],
"source": [
"using CapAndHomalg"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"slideshow": {
"slide_type": "-"
}
},
"outputs": [],
"source": [
"LoadPackage( \"ZariskiFrames\" )"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"true"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"UseSystemSingular(false)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GAP: Q"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ℚ = HomalgFieldOfRationalsInSingular( )"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GAP: Q[t000,t001,t011,t111]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B = ℚ[\"t000,t001,t011,t111\"]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GAP: Q[s_0,s_1,s_2,s_3,s_4]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"T = ℚ[\"s_0..4\"]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [],
"source": [
"ϕ = RingMap( HomalgMatrix( \"-(1/2)*s_0^3+(3/2)*s_0*s_2,-(1/2)*s_0^2*s_1+(1/2)*s_1*s_2+s_0*s_3,-(1/2)*s_0*s_1^2+s_1*s_3+(1/2)*s_0*s_4,-(1/2)*s_1^3+(3/2)*s_1*s_4\", Length( Indeterminates( B ) ), 1, T ), B, T );"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Q[s_0,s_1,s_2,s_3,s_4]\n",
" ^\n",
" |\n",
"[ -1/2*s_0^3+3/2*s_0*s_2, -1/2*s_0^2*s_1+1/2*s_1*s_2+s_0*s_3, -1/2*s_0*s_1^2+s_1*s_3+1/2*s_0*s_4, -1/2*s_1^3+3/2*s_1*s_4 ]\n",
" |\n",
" |\n",
"Q[t000,t001,t011,t111]\n"
]
}
],
"source": [
"Display( ϕ )"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GAP: ( V_{Q[t000,t001,t011,t111]}( I1 ) \\ V_{Q[t000,t001,t011,t111]}( J1_1 ) )"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"im = ConstructibleImage( ϕ )"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"( V( <> )\n",
"\n",
"\\ ∅ )\n"
]
}
],
"source": [
"Display( im )"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Visualize( im )"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Visualize( im, all = true )"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"GAP: ( V_{Q[t000,t001,t011,t111]}( I1 ) \\ V_{Q[t000,t001,t011,t111]}( J1_1 ) )"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"imf = ConstructibleImage( ϕ, freeness = true )"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"true"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"imf == im"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"( V( <> )\n",
"\n",
"\\ ∅ )\n"
]
}
],
"source": [
"Display( imf )"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Visualize( imf )"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"Visualize( imf, all = true )"
]
}
],
"metadata": {
"@webio": {
"lastCommId": null,
"lastKernelId": null
},
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Julia 1.10.2",
"language": "julia",
"name": "julia-1.10"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.10.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}