{
  "aliases": null,
  "backlinks": [
    {
      "field": "uses",
      "target": "1H650VRZVT"
    },
    {
      "field": "uses",
      "target": "BQ0AC9QX7E"
    },
    {
      "field": "uses",
      "target": "GF1RK91VED"
    },
    {
      "field": "uses",
      "target": "ZA4YXJ9T1P"
    },
    {
      "field": "defines",
      "target": "A1MRBS3Z5C"
    }
  ],
  "body": "\n## Summary\n\nAn operation $f \\colon A^n \\to A$ is a polymorphism of a relation $R \\subseteq A^m$ when applying $f$ coordinatewise to tuples of $R$ always gives a tuple of $R$.\nOne also says that $f$ preserves $R$, or that $R$ is invariant under $f$.\nThe polymorphisms of a set of relations form a [[clone|PTKR703G6A]], and this links operations to relations through a Galois connection.\nPolymorphisms are the main tool of the algebraic approach to constraint satisfaction problems.\n\n## Explanations\n\n### L1 human\n\nWrite the tuples of a relation as the rows of a table, and pick $n$ rows.\nApply $f$ to each column of the chosen rows, and you get a new row.\nThe operation $f$ is a polymorphism if this new row is always again in the table.\nFor example, the operation $\\min$ on $\\R$ is a polymorphism of the order $\\le$: if $a \\le b$ and $c \\le d$, then $\\min(a, c) \\le \\min(b, d)$.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "kind": "concept",
    "msc": [
      "08A40",
      "08A02"
    ],
    "name": "Polymorphism of a relation",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Clone_(algebra)"
      }
    ],
    "tag": "A0K9EZRM7E"
  },
  "kind": "concept",
  "link": "https://tamnd.github.io/math2/node/A0K9EZRM7E/",
  "links": null,
  "markdown": "https://tamnd.github.io/math2/node/A0K9EZRM7E.md",
  "msc": [
    "08A40",
    "08A02"
  ],
  "name": "Polymorphism of a relation",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/A0K/A0K9EZRM7E.md",
  "status": null,
  "tag": "A0K9EZRM7E",
  "uri": "m2://A0K9EZRM7E",
  "url": "https://tamnd.github.io/math2/wiki/polymorphism-of-a-relation/",
  "writing": {
    "tag": "A0K9EZRM7E",
    "kind": "concept",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      },
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
