{
"cells": [
{
"cell_type": "markdown",
"id": "7c3bc808-0b5e-4b31-a7d1-fbcad76c913c",
"metadata": {},
"source": [
"### 超幾何関数と超幾何微分方程式\n",
"\n",
"超幾何関数が満たす微分方程式を超幾何微分方程式と呼びます。具体的には\n",
"$$F(x)=_{2}F_1\\left(a,b;c;x\\right)$$\n",
"の時、\n",
"$$x\\,(1-x)\\frac{d^2\\,F(x)}{d\\,x^2}+(c-(a+b+1)\\,x)\\,\\frac{d\\,F(x)}{d\\,x}-a\\,b\\,F(x)=0$$\n",
"が成り立ちます。これを証明していきます。\n",
"\n",
"証明の方針としては$A_n=\\frac{(a)_n\\,(b)_n}{(c)_n}$として、\n",
"$$F(x)=\\sum_{n=0}^{\\infty}\\frac{A_n\\,x^n}{n!}$$\n",
"から$\\frac{d}{dx}F(x), \\frac{d^2}{dx^2}F(x)$の級数展開を、係数に$A_{n+1}$が現れる場合と$A_n$が現れる場合と2通り計算します。\n",
"\n",
"次に上記の$A_n$の定義から自明に導かれる漸化式$A_{n+1}=\\frac{(a+n)\\,(b+n)}{c+n}\\,A_n$から$(c+n)\\,A_{n+1}=(a+n)\\,(b+n)\\,A_n$の両辺を展開して、さらに両辺の総和を取ります。その各項を先ほど求めた微分に置き換えていくことでこの微分方程式を求めます。"
]
},
{
"cell_type": "markdown",
"id": "29f05174-2872-4eb2-a41c-832540426d6d",
"metadata": {},
"source": [
"準備としてout1stTerm()という関数を定義します。総和の式を引数としてとり、総和の最初の項を取り出し、それと第2項以降の総和の和にします。その際に第2項以降の総和を$n=0$から始まるように調整します。"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "e19e4961-4f1d-41b4-821e-cb58460e4773",
"metadata": {},
"outputs": [],
"source": [
"out1stTerm(sumexp):=block([ar:args(sumexp),exp,varname,initvalue,finvalue],\n",
" [exp,varname,initvalue,finvalue]:ar,\n",
" subst(0,varname,exp)+apply(sum,[subst(varname+1,varname,exp),varname,initvalue,finvalue]))$"
]
},
{
"cell_type": "markdown",
"id": "c90fe632-c6f7-48a0-b1cf-d09f39c2afb0",
"metadata": {},
"source": [
"まず$F(x)$を級数展開の形で定義します。"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "30db0b79-40c7-4d9b-9608-3c152513b789",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{1}$}F\\left(x\\right)=\\sum_{n=0}^{\\infty }{\\frac{A_{n}\\,x^{n}}{n!}}\\]"
],
"text/plain": [
" inf n\n",
" ==== A x\n",
" \\ n\n",
"(%o1) F(x) = > -----\n",
" / n!\n",
" ====\n",
" n = 0"
],
"text/x-maxima": [
"F(x) = 'sum((A[n]*x^n)/n!,n,0,inf)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"F0:F(x)=sum(A[n]/n!*x^n,n,0,inf);"
]
},
{
"cell_type": "markdown",
"id": "6f21cb6d-708b-4378-b259-1b666199b13d",
"metadata": {},
"source": [
"このまま微分します。"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "15298aec-7ece-4014-834a-4080a7c29d9d",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{2}$}\\frac{d}{d\\,x}\\,F\\left(x\\right)=\\sum_{n=0}^{\\infty }{\\frac{n\\,A_{n}\\,x^{n-1}}{n!}}\\]"
],
"text/plain": [
" inf n - 1\n",
" ==== n A x\n",
" d \\ n\n",
"(%o2) -- (F(x)) = > -----------\n",
" dx / n!\n",
" ====\n",
" n = 0"
],
"text/x-maxima": [
"'diff(F(x),x,1) = 'sum((n*A[n]*x^(n-1))/n!,n,0,inf)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"FD1_1:'diff(F(x),x)=diff(rhs(F0),x);"
]
},
{
"cell_type": "markdown",
"id": "f2dbdc4e-dc1c-498f-ad9e-8dc74bf481de",
"metadata": {},
"source": [
"右辺にout1stTerm()を使って$n=0$の場合を外に出し、第2項以降の総和のインデックスを調整します。"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "4afd68c3-40de-4342-b7a8-5a5ef7110463",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{3}$}\\frac{d}{d\\,x}\\,F\\left(x\\right)=\\sum_{n=0}^{\\infty }{\\frac{A_{n+1}\\,x^{n}}{n!}}\\]"
],
"text/plain": [
" inf n\n",
" ==== A x\n",
" d \\ n + 1\n",
"(%o3) -- (F(x)) = > ---------\n",
" dx / n!\n",
" ====\n",
" n = 0"
],
"text/x-maxima": [
"'diff(F(x),x,1) = 'sum((A[n+1]*x^n)/n!,n,0,inf)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"SB-KERNEL:REDEFINITION-WITH-DEFUN: redefining MAXIMA::SIMP-UNIT-STEP in DEFUN\n",
"SB-KERNEL:REDEFINITION-WITH-DEFUN: redefining MAXIMA::SIMP-POCHHAMMER in DEFUN\n"
]
}
],
"source": [
"FD1_2:lhs(FD1_1)=ev(out1stTerm(rhs(FD1_1)),factorial_expand:true);"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "9f276802-360e-4c57-a650-447a46d158c1",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{4}$}\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)=\\sum_{n=0}^{\\infty }{\\frac{\\left(n-1\\right)\\,n\\,A_{n}\\,x^{n-2}}{n!}}\\]"
],
"text/plain": [
" inf n - 2\n",
" 2 ==== (n - 1) n A x\n",
" d \\ n\n",
"(%o4) --- (F(x)) = > -------------------\n",
" 2 / n!\n",
" dx ====\n",
" n = 0"
],
"text/x-maxima": [
"'diff(F(x),x,2) = 'sum(((n-1)*n*A[n]*x^(n-2))/n!,n,0,inf)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"FD2_1:'diff(F(x),x,2)=diff(rhs(FD1_1),x);"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "8b7b1736-d750-43fd-b153-11d073725b2d",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{5}$}\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)=\\sum_{n=0}^{\\infty }{\\frac{n\\,A_{n+1}\\,x^{n-1}}{n!}}\\]"
],
"text/plain": [
" inf n - 1\n",
" 2 ==== n A x\n",
" d \\ n + 1\n",
"(%o5) --- (F(x)) = > ---------------\n",
" 2 / n!\n",
" dx ====\n",
" n = 0"
],
"text/x-maxima": [
"'diff(F(x),x,2) = 'sum((n*A[n+1]*x^(n-1))/n!,n,0,inf)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"FD2_2:lhs(FD2_1)=ev(out1stTerm(rhs(FD2_1)),factorial_expand:true);"
]
},
{
"cell_type": "markdown",
"id": "e019abf4-2153-4963-897b-47e22adb7fcf",
"metadata": {},
"source": [
"$A_n$の定義から次の漸化式が自明に成り立ちます。"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "407e29be-910f-426c-824f-87da3ad6aa0e",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{6}$}A_{n+1}=\\frac{\\left(n+a\\right)\\,\\left(n+b\\right)\\,A_{n}}{n+c}\\]"
],
"text/plain": [
" (n + a) (n + b) A\n",
" n\n",
"(%o6) A = ------------------\n",
" n + 1 n + c"
],
"text/x-maxima": [
"A[n+1] = ((n+a)*(n+b)*A[n])/(n+c)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Acond:A[n+1]=(a+n)*(b+n)/(c+n)*A[n];"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e15432bd-71d1-4b12-b67f-f5bdb794f0df",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{7}$}n\\,A_{n+1}+c\\,A_{n+1}=n^2\\,A_{n}+b\\,n\\,A_{n}+a\\,n\\,A_{n}+a\\,b\\,A_{n}\\]"
],
"text/plain": [
" 2\n",
"(%o7) n A + c A = n A + b n A + a n A + a b A\n",
" n + 1 n + 1 n n n n"
],
"text/x-maxima": [
"n*A[n+1]+c*A[n+1] = n^2*A[n]+b*n*A[n]+a*n*A[n]+a*b*A[n]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"expand(%*(n+c));"
]
},
{
"cell_type": "markdown",
"id": "aee6ebf2-1c74-416d-9d45-6a9d7354ed12",
"metadata": {},
"source": [
"両辺に$\\frac{x^n}{n!}$をかけた式について$n=0$から$\\infty$まで総和を取ります。"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "a8bbcc0e-2c91-4d6b-bdbc-79633efc31bc",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{8}$}\\sum_{n=0}^{\\infty }{\\frac{\\left(n+c\\right)\\,A_{n+1}\\,x^{n}}{n!}}=\\sum_{n=0}^{\\infty }{\\frac{\\left(n^2+\\left(b+a\\right)\\,n+a\\,b\\right)\\,A_{n}\\,x^{n}}{n!}}\\]"
],
"text/plain": [
" inf n inf 2 n\n",
" ==== (n + c) A x ==== (n + (b + a) n + a b) A x\n",
" \\ n + 1 \\ n\n",
"(%o8) > ----------------- = > ----------------------------\n",
" / n! / n!\n",
" ==== ====\n",
" n = 0 n = 0"
],
"text/x-maxima": [
"'sum(((n+c)*A[n+1]*x^n)/n!,n,0,inf) = 'sum(((n^2+(b+a)*n+a*b)*A[n]*x^n)/n!,n,\n",
" 0,inf)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SUM:factor(sum(%*x^n/n!,n,0,inf));"
]
},
{
"cell_type": "markdown",
"id": "bde785e6-ce2d-4d79-9d7d-385b48b14a58",
"metadata": {},
"source": [
"上記の式の左辺をじっと睨んでから、FD2_2式の両辺に$x$をかけた式およびFD1_2の両辺に$c$をかけた式の和を計算してみます。"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4f35d58c-7498-4172-ba7b-818d33b7f112",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{9}$}x\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)+c\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)=\\sum_{n=0}^{\\infty }{\\frac{\\left(n+c\\right)\\,A_{n+1}\\,x^{n}}{n!}}\\]"
],
"text/plain": [
" inf n\n",
" 2 ==== (n + c) A x\n",
" d d \\ n + 1\n",
"(%o9) x (--- (F(x))) + c (-- (F(x))) = > -----------------\n",
" 2 dx / n!\n",
" dx ====\n",
" n = 0"
],
"text/x-maxima": [
"x*'diff(F(x),x,2)+c*'diff(F(x),x,1) = 'sum(((n+c)*A[n+1]*x^n)/n!,n,0,inf)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"LDE:factor(sumcontract(intosum(FD2_2*x+c*FD1_2)));"
]
},
{
"cell_type": "markdown",
"id": "9a282646-d6da-41f5-ba8e-352a8c0d336d",
"metadata": {},
"source": [
"SUMの左辺とLDEの右辺が等しいことが見て取れます。
\n",
"同様にFD2_1に$x^2$, FD1_1に$x\\,(1+a+b)$, F0に$a\\,b$をかけて足した式を計算します。"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "c50de1e1-0e42-4b0a-88b6-1ed7af8c5248",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{10}$}x^2\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)+b\\,x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+a\\,x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+a\\,b\\,F\\left(x\\right)=\\sum_{n=0}^{\\infty }{\\frac{\\left(n^2+\\left(b+a\\right)\\,n+a\\,b\\right)\\,A_{n}\\,x^{n}}{n!}}\\]"
],
"text/plain": [
" 2\n",
" 2 d d d d\n",
"(%o10) x (--- (F(x))) + b x (-- (F(x))) + a x (-- (F(x))) + x (-- (F(x)))\n",
" 2 dx dx dx\n",
" dx\n",
" inf 2 n\n",
" ==== (n + (b + a) n + a b) A x\n",
" \\ n\n",
" + a b F(x) = > ----------------------------\n",
" / n!\n",
" ====\n",
" n = 0"
],
"text/x-maxima": [
"x^2*'diff(F(x),x,2)+b*x*'diff(F(x),x,1)+a*x*'diff(F(x),x,1)+x*'diff(F(x),x,1)\n",
" +a*b*F(x)\n",
" = 'sum(((n^2+(b+a)*n+a*b)*A[n]*x^n)/n!,n,0,inf)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"RDE:factor(sumcontract(intosum(FD2_1*x^2+FD1_1*x*(1+a+b)+a*b*F0)));"
]
},
{
"cell_type": "markdown",
"id": "5072234c-3650-4bc8-8042-3714ea38613f",
"metadata": {},
"source": [
"RDEの右辺とSUMの右辺が等しいことが見て取れます。
\n",
"従ってLDEの左辺とRDEの左辺が等しいことがわかり、次の微分方程式が得られます。"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "53de7f4b-a2f2-451e-bf63-ec3b3b356285",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{11}$}x\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)+c\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)=x^2\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)+b\\,x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+a\\,x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+a\\,b\\,F\\left(x\\right)\\]"
],
"text/plain": [
" 2\n",
" d d\n",
"(%o11) x (--- (F(x))) + c (-- (F(x))) = \n",
" 2 dx\n",
" dx\n",
" 2\n",
" 2 d d d d\n",
" x (--- (F(x))) + b x (-- (F(x))) + a x (-- (F(x))) + x (-- (F(x))) + a b F(x)\n",
" 2 dx dx dx\n",
" dx"
],
"text/x-maxima": [
"x*'diff(F(x),x,2)+c*'diff(F(x),x,1) = x^2*'diff(F(x),x,2)\n",
" +b*x*'diff(F(x),x,1)+a*x*'diff(F(x),x,1)\n",
" +x*'diff(F(x),x,1)+a*b*F(x)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"lhs(LDE)=lhs(RDE);"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "5b48d4aa-af41-4add-b709-1627aa0769cf",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{12}$}x\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)-x^2\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)=b\\,x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+a\\,x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+x\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)-c\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)+a\\,b\\,F\\left(x\\right)\\]"
],
"text/plain": [
" 2 2\n",
" d 2 d\n",
"(%o12) x (--- (F(x))) - x (--- (F(x))) = \n",
" 2 2\n",
" dx dx\n",
" d d d d\n",
" b x (-- (F(x))) + a x (-- (F(x))) + x (-- (F(x))) - c (-- (F(x))) + a b F(x)\n",
" dx dx dx dx"
],
"text/x-maxima": [
"x*'diff(F(x),x,2)-x^2*'diff(F(x),x,2) = b*x*'diff(F(x),x,1)\n",
" +a*x*'diff(F(x),x,1)+x*'diff(F(x),x,1)\n",
" -c*'diff(F(x),x,1)+a*b*F(x)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%-args(rhs(%))[1]-args(lhs(%))[2];"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "16065761-b4f9-4440-9a55-2bdde0a2ce52",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{13}$}\\left(x-x^2\\right)\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)+\\left(\\left(-b-a-1\\right)\\,x+c\\right)\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)-a\\,b\\,F\\left(x\\right)=0\\]"
],
"text/plain": [
" 2\n",
" 2 d d\n",
"(%o13) (x - x ) (--- (F(x))) + (((- b) - a - 1) x + c) (-- (F(x)))\n",
" 2 dx\n",
" dx\n",
" - a b F(x) = 0"
],
"text/x-maxima": [
"(x-x^2)*'diff(F(x),x,2)+(((-b)-a-1)*x+c)*'diff(F(x),x,1)-a*b*F(x) = 0"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%-rhs(%),ratsimp;"
]
},
{
"cell_type": "markdown",
"id": "4363a68a-7ea2-43b4-858f-c55943a07c0a",
"metadata": {},
"source": [
"少し整理して所望の形の微分方程式を得ることができました。"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "2b88aefc-76dd-4876-99ad-16c63714dcee",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{14}$}\\mathbf{true}\\]"
],
"text/plain": [
"(%o14) true"
],
"text/x-maxima": [
"true"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"display2d;"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "2fc31e05-4907-4c46-a63a-b45fc5dc5c55",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{16}$}\\mathbf{false}\\]"
],
"text/plain": [
"(%o16) false"
],
"text/x-maxima": [
"false"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"display2d:false;"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "0c4a139b-3f2d-41f9-bf3d-57b1e81aeb74",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\(\\left(x-x^2\\right)\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)+\\left(\\left(-b-a-1\\right)\\,x+c\\right)\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)-a\\,b\\,F\\left(x\\right)=0\\)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{18}$}\\left(x-x^2\\right)\\,\\left(\\frac{d^2}{d\\,x^2}\\,F\\left(x\\right)\\right)+\\left(\\left(-b-a-1\\right)\\,x+c\\right)\\,\\left(\\frac{d}{d\\,x}\\,F\\left(x\\right)\\right)-a\\,b\\,F\\left(x\\right)=0\\]"
],
"text/plain": [
"(%o18) (x-x^2)*'diff(F(x),x,2)+(((-b)-a-1)*x+c)*'diff(F(x),x,1)-a*b*F(x) = 0"
],
"text/x-maxima": [
"(x-x^2)*'diff(F(x),x,2)+(((-b)-a-1)*x+c)*'diff(F(x),x,1)-a*b*F(x) = 0"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(%o13);"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "32db64d3-85a4-4afa-a554-590d94ca3f24",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Maxima",
"language": "maxima",
"name": "maxima"
},
"language_info": {
"codemirror_mode": "maxima",
"file_extension": ".mac",
"mimetype": "text/x-maxima",
"name": "maxima",
"pygments_lexer": "maxima",
"version": "5.44.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}