{
"path": "/moaz6ygqo5nii1",
"site": "at://did:plc:ngokl2gnmpbvuvrfckja3g7p/site.standard.publication/3m3frizuz2c2v",
"$type": "site.standard.document",
"title": "mathblog test",
"content": {
"$type": "pub.leaflet.content",
"pages": [
{
"id": "page:0",
"$type": "pub.leaflet.pages.linearDocument",
"blocks": [
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "In order to assemble an application stack, I'm building what I'm calling a \"capability based tensor network\". Tensor algebra is essentially linear algebra's older brother. In linear algebra, you have concepts like scalars and vectors. In tensor algebra you just have tensors."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Here is a table mapping linear algebra concepts to tensor algebra concepts to make it obvious what I'll be talking about"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"tex": "\\begin{array}{|l|l|}\n \\hline\n \\text{Linear Algebra} & \\text{Tensor Algebra} \\\\\n \\hline\n \\text{Scalar} & \\text{Rank-0} \\\\\n \\hline\n \\text{Vector} & \\text{Rank-1} \\\\\n \\hline\n\\end{array}",
"$type": "pub.leaflet.blocks.math"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "A vector is written in tensor form like so: vⁱ. The superscript means it has an upper index. Vectors represent capabilities of our network"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "If vⁱ pairs to a lower index vᵢ it contracts and we get a scalar. When vectors pair, they cancel each other out."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Lower -index values, also called co-vectors, represent requirements of our tensor network."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Using DisCoCat we can model this with natural language\nFor our lexicon let's use n for Noun and s for Sentence (standard DisCoCat naming convention). They represent the vectors in our network. They are capabilities"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We model our natural language as tensor products with what's called adjoints"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Server: n ← Server is a Noun\nNeeds: nʳ ⊗ s ⊗ nˡ ← Noun needs a Noun\nDatabase: n ← Database is also a Noun\nData: n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We can model the requirements \"Server needs database\" and \"Database needs data\" as the tensor product:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"tex": "Server \\otimes Needs \\otimes Database \\otimes Needs \\otimes Data",
"$type": "pub.leaflet.blocks.math"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "nʳ is the right-adjoint. That means that if it is on the right hand side of a Noun then it will pair with it."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "nˡ is the left-adjoint. Same thing just pairs with Nouns when it's on the left of them."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "nʳ and nˡ are our co-vectors in the tensor network. They are requirements."
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We can expand the tensor product of"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"tex": "Server \\otimes Needs \\otimes Database \\otimes Needs \\otimes Data",
"$type": "pub.leaflet.blocks.math"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "to be explicit:"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"tex": "n \\otimes (n^r \\otimes s \\otimes n^l) \\otimes n \\otimes (n^r \\otimes s \\otimes n^l) \\otimes n",
"$type": "pub.leaflet.blocks.math"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Let's start with Database. Since it has a left-adjoint on the left, and a right-adjoint on the right, that entire term nˡ ⊗ n ⊗ nʳ pairs and cancels out. The astute reader might say \"Hey, wait a minute! There are two co-vectors and only one vector! What gives?!\" frobenius algebra says that we can use the comultiplication map (Δ) to make as many copies of a vector as we need because we are talking about the concept of a database, not an actual instance of a database. n → n ⊗ n"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "Server and Data both pair with their adjoints and cancel out leaving us with"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"tex": "s \\otimes s",
"$type": "pub.leaflet.blocks.math"
}
},
{
"$type": "pub.leaflet.pages.linearDocument#block",
"block": {
"$type": "pub.leaflet.blocks.text",
"plaintext": "We've just used the Curry-Howard Isomorphism as a mathematical proof that our Server is related to our Data through quantum entanglement. How's that for system requirements?"
}
}
]
}
]
},
"updatedAt": "2026-04-24T02:02:53.626Z",
"publishedAt": "2026-04-24T02:02:53.524Z"
}