{"id":454147,"date":"2025-04-01T16:39:30","date_gmt":"2025-04-01T16:39:30","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=454147"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=454147","title":{"rendered":"<span>The Links Theory 0.0.2<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>Note: The article was published at the 1st of April, but the translation is in the progress (some parts are still in Russian). I hope for your understanding. This note will be removed once it is ready. Save it to bookmarks to read later, please.<\/em><\/strong><\/p>\n<p>Last April 1st, as you might have guessed, we were joking. It\u2019s time to fix that, and now everything is <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"100\\%\" alt=\"100\\%\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/298\/8ef\/3a6\/2988ef3a67988537121da1f6acea3521.svg\" width=\"46\" height=\"19\"\/> serious.<\/p>\n<h4>TL;DR (too long; didn&#8217;t read)<\/h4>\n<p>This article contains many letters, but it can be represented using just 4 symbols from <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_theory\" rel=\"noopener noreferrer nofollow\">set theory<\/a>:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L \\to L^2\" alt=\"L \\to L^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42d\/52f\/71e\/42d52f71e0454feb23d2d4d6773ab933.svg\" width=\"66\" height=\"21\"\/><\/p>\n<\/blockquote>\n<p>Everything else follows from them.<\/p>\n<h2>Overview<\/h2>\n<p>This article is primarily aimed at programmers and mathematicians, yet we\u2019ve designed it to be accessible to anyone interested in the ideas it presents. We believe that the concepts discussed here can serve as inspiration across a wide range of scientific disciplines.<\/p>\n<p>Our goal was to create a self-contained text that guides you through each topic in a clear, logical order. Throughout the article, you\u2019ll find links to <a href=\"https:\/\/www.wikipedia.org\" rel=\"noopener noreferrer nofollow\">Wikipedia<\/a> for those who wish to explore specific terms or concepts in more depth \u2014 but these are entirely optional. The text is intended to be easily understood when read from start to finish.<\/p>\n<p>Every symbol and formula is explained individually, with concise definitions provided where needed. We\u2019ve also included images to help illustrate key ideas. If you come across anything that isn\u2019t clear, please let us know so we can improve it.<\/p>\n<h2>Comparison of theories<\/h2>\n<p>To quickly dive in, we begin by comparing the mathematical foundations of the two most popular <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_model\" rel=\"noopener noreferrer nofollow\">data models<\/a> with that of the <a href=\"https:\/\/web.archive.org\/web\/20210814063207\/https:\/\/en.wikipedia.org\/wiki\/Associative_model_of_data\" rel=\"noopener noreferrer nofollow\">associative model of data<\/a>.<\/p>\n<p>In the course of our research, we discovered that traditional theories were sometimes overly complex or redundant, while at other times they imposed too many artificial constraints. <\/p>\n<p>This overall lack of flexibility, adaptability, and universality motivated us to search for a simpler yet all-encompassing informational theory and a data storage model that future artificial intelligence could easily understand and effectively utilize. Along the way, we drew inspiration from the workings of our own associative memory and associative thought processes.<\/p>\n<h3>Relational Algebra<\/h3>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_algebra\" rel=\"noopener noreferrer nofollow\">Relational algebra<\/a> and the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> are based on the concepts of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relations<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>.<\/p>\n<p>A <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relation<\/a> is defined as a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{R \\subseteq S_1 \\times S_2 \\times \\dots \\times S_n.}\" alt=\"\\mathbf{R \\subseteq S_1 \\times S_2 \\times \\dots \\times S_n.}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e61\/ff7\/187\/e61ff7187b7395121c7d84e471201746.svg\" width=\"213\" height=\"19\"\/> <a href=\"https:\/\/dl.acm.org\/doi\/abs\/10.1145\/362384.362685\" rel=\"noopener noreferrer nofollow\">[1]<\/a><\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e8f\/883\/fef\/e8f883fefd210cb011de4adc628c0880.png\" alt=\"\u0420\u0438\u0441. 1. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u043c , \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0442\u0440\u043e\u043a , \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u0445 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0443 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044e .\" title=\"Figure 1.\u00a0A table is described by a relation, which is represented as a set of rows , belonging to a Cartesian product .\" width=\"2450\" height=\"1000\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e8f\/883\/fef\/e8f883fefd210cb011de4adc628c0880.png\"\/><\/p>\n<div><figcaption><strong>Figure 1.<\/strong>\u00a0A table is described by a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relation<\/a><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{R}\" alt=\"\\mathbf{R}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/203\/6f3\/b34\/2036f3b3468859de12152bc067e47dac.svg\" width=\"14\" height=\"14\"\/>, which is represented as a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Row_(database)\" rel=\"noopener noreferrer nofollow\">rows<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{r}\" alt=\"\\mathbf{r}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/33d\/2a7\/97e\/33d2a797ee86429db7e38da67483e75f.svg\" width=\"8\" height=\"11\"\/>, belonging to a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cartesian_product\" rel=\"noopener noreferrer nofollow\">Cartesian product<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{S_1 \\times S_2 \\times \\dots \\times S_n}\" alt=\"\\mathbf{S_1 \\times S_2 \\times \\dots \\times S_n}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/828\/aec\/1c7\/828aec1c78c1359119fc7ccd175da2aa.svg\" width=\"132\" height=\"17\"\/>.<\/figcaption><\/div>\n<\/figure>\n<p><strong>Where:<\/strong><\/p>\n<ul>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_mathematical_symbols\" rel=\"noopener noreferrer nofollow\">symbol<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{R}\" alt=\"\\mathbf{R}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/31f\/d32\/a0d\/31fd32a0d3f4da43190e7cb8a750eb76.svg\" width=\"17\" height=\"17\"\/>denotes a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(mathematics)\" rel=\"noopener noreferrer nofollow\">relation<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">table<\/a>);<\/p>\n<\/li>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_mathematical_symbols\" rel=\"noopener noreferrer nofollow\">symbol<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\subseteq\" alt=\"\\subseteq\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b9b\/ec9\/a4e\/b9bec9a4e452e6275b2121100862a5b5.svg\" width=\"15\" height=\"18\"\/> indicates that the left side of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Expression_(mathematics)\" rel=\"noopener noreferrer nofollow\">expression<\/a> is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Subset\" rel=\"noopener noreferrer nofollow\">subset<\/a> of the right side;<\/p>\n<\/li>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_mathematical_symbols\" rel=\"noopener noreferrer nofollow\">symbol<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\times\" alt=\"\\times\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/301\/5d0\/0ff\/3015d00ff84b04fc4c65992435fbd09f.svg\" width=\"15\" height=\"12\"\/> denotes the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cartesian_product\" rel=\"noopener noreferrer nofollow\">Cartesian product<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">sets<\/a>;<\/p>\n<\/li>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Expression_(mathematics)\" rel=\"noopener noreferrer nofollow\">expression<\/a><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{S_n}\" alt=\"\\mathbf{S_n}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/940\/b2c\/ce2\/940b2cce2daa321e8da40ba1da98f586.svg\" width=\"23\" height=\"19\"\/>represents the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_domain\" rel=\"noopener noreferrer nofollow\">domain<\/a>, i.e., the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> of all possible <a href=\"https:\/\/en.wikipedia.org\/wiki\/Value_(computer_science)\" rel=\"noopener noreferrer nofollow\">values<\/a> that each <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">cell<\/a> in a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">column<\/a> can contain.<\/p>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Row_(database)\" rel=\"noopener noreferrer nofollow\">Rows<\/a>, or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Element_(mathematics)\" rel=\"noopener noreferrer nofollow\">elements<\/a> of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relation<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{R}\" alt=\"\\mathbf{R}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e84\/6f7\/61f\/e846f761f953c75ff51d3230849758c2.svg\" width=\"17\" height=\"17\"\/>, are represented as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>.<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_(computer_science)\" rel=\"noopener noreferrer nofollow\">Data<\/a> in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> is grouped into <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relations<\/a>. By using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> in this <a href=\"https:\/\/en.wikipedia.org\/wiki\/Database_model\" rel=\"noopener noreferrer nofollow\">model<\/a>, one can precisely represent any conceivable <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_structure\" rel=\"noopener noreferrer nofollow\">data structure<\/a>. But are <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> really necessary? For example, every <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a> can be represented as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple#Tuples_as_nested_ordered_pairs\" rel=\"noopener noreferrer nofollow\">nested ordered pairs<\/a>, which suggests that <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">ordered pairs<\/a> alone might be sufficient to represent any <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_(computer_science)\" rel=\"noopener noreferrer nofollow\">data<\/a>. Moreover, it\u2019s uncommon for <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">column<\/a> values in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">tables<\/a> to be represented as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> (although, for instance, a number can be decomposed into an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bit\" rel=\"noopener noreferrer nofollow\">bits<\/a>). In some <a href=\"https:\/\/en.wikipedia.org\/wiki\/SQL\" rel=\"noopener noreferrer nofollow\">SQL<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Database\" rel=\"noopener noreferrer nofollow\">databases<\/a>, it is even forbidden to use more than <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{32}\" alt=\"\\mathbf{32}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e52\/b83\/18e\/e52b8318e2fc33ea0901c041bc1f2acd.svg\" width=\"23\" height=\"16\"\/> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">columns<\/a> in a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">table<\/a> (and, by extension, in its corresponding <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a>). Thus, the actual value of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{N}\" alt=\"\\mathbf{N}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8f4\/3fc\/dc7\/8f43fcdc7fc9b1e936482129daffffa5.svg\" width=\"18\" height=\"17\"\/> is usually lower than <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{32}\" alt=\"\\mathbf{32}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ded\/f66\/0ff\/dedf660ff7a5b1d8bfa99b90ca0aca67.svg\" width=\"23\" height=\"16\"\/>. Therefore, in these cases, there are no <a href=\"https:\/\/en.wikipedia.org\/wiki\/Truth\" rel=\"noopener noreferrer nofollow\">true<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> \u2014 even in modern <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Database\" rel=\"noopener noreferrer nofollow\">databases<\/a>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1ab\/e38\/6a3\/1abe386a353c55b7916bef53e38940ff.png\" alt=\"\u0420\u0438\u0441. 2. \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0438 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 (\u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0421\u0430\u0439\u043c\u043e\u043d\u0430 \u0412\u0438\u043b\u044c\u044f\u043c\u0441\u0430 \u0431\u044b\u043b\u0430 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0430 \u0434\u0432\u0430\u0436\u0434\u044b). \u0418\u043d\u044b\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438 \u0434\u043b\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u043e\u0434 \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u0434\u0430\u043d\u043d\u044b\u0445, \u0432 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0431\u044b\u043b\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0432\u0443\u0445 \u0442\u0430\u0431\u043b\u0438\u0446, \u0430 \u043f\u043e\u0442\u043e\u043c \u0438 \u0432\u043e\u0432\u0441\u0435 \u043e\u0434\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432 \u0438\u043b\u0438 \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432.\" title=\"Figure 2. Comparison of the relational model and the associative model of data (the original model proposed by Simon Williams was simplified by us twice) [3]. In other words, representing all data in the relational model requires a multitude of tables \u2014 one for each data type \u2014 whereas in the associative model, it turned out that initially two tables were sufficient (items and links), and eventually just a single table  (links) of triplets or doublets was enough.\" width=\"671\" height=\"300\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/1ab\/e38\/6a3\/1abe386a353c55b7916bef53e38940ff.png\"\/><\/p>\n<div><figcaption><strong>Figure 2.<\/strong> Comparison of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> and the <a href=\"http:\/\/iacis.org\/iis\/2009\/P2009_1301.pdf\" rel=\"noopener noreferrer nofollow\">associative model of data<\/a> (the original <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_model\" rel=\"noopener noreferrer nofollow\">model<\/a> proposed by <a href=\"https:\/\/www.linkedin.com\/in\/s1m0n\" rel=\"noopener noreferrer nofollow\">Simon Williams<\/a> was simplified by us twice) <a href=\"https:\/\/web.archive.org\/web\/20181219134621\/http:\/\/sentences.com\/docs\/amd.pdf\" rel=\"noopener noreferrer nofollow\">[3]<\/a>. In other words, representing all <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_(computer_science)\" rel=\"noopener noreferrer nofollow\">data<\/a> in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> requires a multitude of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">tables<\/a> \u2014 one for each <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_type\" rel=\"noopener noreferrer nofollow\">data type<\/a> \u2014 whereas in the<a href=\"https:\/\/web.archive.org\/web\/20210814063207\/https:\/\/en.wikipedia.org\/wiki\/Associative_model_of_data\" rel=\"noopener noreferrer nofollow\"> associative model<\/a>, it turned out that initially two <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">tables<\/a> were sufficient (<code>items<\/code> and <code>links<\/code>), and eventually just a single <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">table<\/a>  (<code>links<\/code>) of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">triplets<\/a> or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">doublets<\/a> was enough.<\/figcaption><\/div>\n<\/figure>\n<h3>Directed Graph<\/h3>\n<p>Directed graphs \u2014 and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_theory\" rel=\"noopener noreferrer nofollow\">graphs<\/a> in general \u2014 are based on the concepts of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">vertices<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">2-tuples<\/a>). <\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Directed_graph\" rel=\"noopener noreferrer nofollow\">A directed graph<\/a> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{G}\" alt=\"\\mathbf{G}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2a0\/936\/873\/2a0936873b5fbf6dc6bce2aaabf716f5.svg\" width=\"18\" height=\"17\"\/> is defined as follows:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{G = (V, E), \\quad E \\subseteq V \\times V.}\" alt=\"\\mathbf{G = (V, E), \\quad E \\subseteq V \\times V.}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fa9\/e1f\/e8e\/fa9e1fe8e000474930ee7d543ebfd8b1.svg\" width=\"240\" height=\"22\"\/> <a href=\"https:\/\/books.google.com\/books?id=vaXv_yhefG8C\" rel=\"noopener noreferrer nofollow\">[2]<\/a><\/p>\n<\/blockquote>\n<p>Where:<\/p>\n<ul>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{V}\" alt=\"\\mathbf{V}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59a\/ccb\/b8a\/59accbb8a95f3e359e9a3738c97d272a.svg\" width=\"17\" height=\"17\"\/>\u00a0&#8212; \u044d\u0442\u043e\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e<\/a>, \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">\u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438<\/a>, \u0443\u0437\u043b\u0430\u043c\u0438 \u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{V}\" alt=\"\\mathbf{V}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/59a\/ccb\/b8a\/59accbb8a95f3e359e9a3738c97d272a.svg\" width=\"17\" height=\"17\"\/>\u00a0is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> whose elements are called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">vertices<\/a>, nodes, or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Point_(geometry)\" rel=\"noopener noreferrer nofollow\">points<\/a>;<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{E}\" alt=\"\\mathbf{E}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c1\/379\/4d2\/8c13794d2118caf7d61eb611492c8e75.svg\" width=\"15\" height=\"17\"\/>\u00a0&#8212; \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440<\/a> (2-\u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439)\u00a0\u0432\u0435\u0440\u0448\u0438\u043d, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0443\u0433\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0431\u0440\u0430\u043c\u0438 (\u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0431\u0440\u0430\u043c\u0438), \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{E}\" alt=\"\\mathbf{E}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8c1\/379\/4d2\/8c13794d2118caf7d61eb611492c8e75.svg\" width=\"15\" height=\"17\"\/>\u00a0is a set of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">ordered pairs<\/a> (2-<a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">tuples<\/a>) of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">vertices<\/a>, referred to as arcs, directed <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a> (sometimes simply <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a>), arrows, or directed <a href=\"https:\/\/en.wikipedia.org\/wiki\/Line_segment\" rel=\"noopener noreferrer nofollow\">lines segments<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>In the directed graph model, data is represented by two separate <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">sets<\/a>: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">nodes<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a>. This <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_model\" rel=\"noopener noreferrer nofollow\">model<\/a> can be used to represent almost all <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_structure\" rel=\"noopener noreferrer nofollow\">data structures<\/a>, except perhaps <a href=\"https:\/\/en.wikipedia.org\/wiki\/Sequence\" rel=\"noopener noreferrer nofollow\">sequences<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>). Sometimes, chains of vertices are used to represent sequences. Although this method works, it invariably leads to data duplication, and deduplication in such cases is either complicated or unfeasible. Furthermore, sequences in graphs might be represented by decomposing the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple#Tuples_as_nested_sets\" rel=\"noopener noreferrer nofollow\">sequence into nested sets<\/a>, but in our view, this is not a practical approach. It appears that we are not alone in this belief, which may explain why we have not encountered examples of others employing such methods.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/932\/a13\/f5d\/932a13f5d90b47e39fb12ff8eaf8a1b3.png\" alt=\"\u0420\u0438\u0441. 3. \u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u043e\u0440\u0438\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 \u0438 \u0442\u0435\u043e\u0440\u0438\u0438 \u0441\u0432\u044f\u0437\u0435\u0439. \u0412\u0435\u0440\u0448\u0438\u043d\u0430 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u0430 \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u043e\u0439 \u043d\u0430 \u0441\u0435\u0431\u044f \u0441\u0432\u044f\u0437\u0438, \u0442\u043e \u0435\u0441\u0442\u044c \u0441\u0432\u044f\u0437\u0438 \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u0441\u0435\u0431\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0438 \u0432 \u0441\u0435\u0431\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f. \u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0431\u0440\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c-\u0434\u0443\u043f\u043b\u0435\u0442. \u0410 \u043d\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0431\u0440\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u0440\u0443 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0432\u044f\u0437\u0435\u0439-\u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u0432 \u043e\u0431\u043e\u0438\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445. \u0422\u043e \u0435\u0441\u0442\u044c \u0435\u0441\u043b\u0438 \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0442\u0438\u043f\u0430 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0435\u0439 - \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0438 \u0440\u0451\u0431\u0440\u0430, \u0442\u043e \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0441\u0432\u044f\u0437\u0435\u0439 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0432\u044f\u0437\u0435\u0439 (\u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043f\u043e\u0445\u043e\u0436\u0438\u0445 \u043d\u0430 \u0440\u0451\u0431\u0440\u0430).\" title=\"Figure 3. Comparison of the graph theory and the links theory. A vertex is equivalent to a self-referential link \u2014 a link that begins and ends on itself. A directed edge is represented as a directed doublet-links, while an undirected edge is represented as a pair of directed doublet-links in both directions. In other words, while graph theory requires two types of entities \u2014 vertices and edges \u2014 in the links theory only links (which most closely resemble edges) are necessary.\" width=\"1778\" height=\"840\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/932\/a13\/f5d\/932a13f5d90b47e39fb12ff8eaf8a1b3.png\"\/><\/p>\n<div><figcaption><strong>Figure 3.<\/strong> Comparison of the graph theory and the links theory. A vertex is equivalent to <a href=\"https:\/\/linksplatform.github.io\/itself.html\" rel=\"noopener noreferrer nofollow\">a self-referential link<\/a> \u2014 a link that begins and ends on itself. A directed edge is represented as a directed doublet-links, while an undirected edge is represented as a pair of directed doublet-links in both directions. In other words, while graph theory requires two types of entities \u2014 vertices and edges \u2014 in the links theory only links (which most closely resemble edges) are necessary.<\/figcaption><\/div>\n<\/figure>\n<h3>The links theory<\/h3>\n<p>The links theory is based on the concept of a link.<\/p>\n<p>In the projection of the links theory into set theory, <a href=\"https:\/\/habr.com\/ru\/companies\/deepfoundation\/articles\/576398\" rel=\"noopener noreferrer nofollow\">a link<\/a> is defined as an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a> of references to links, which has its own reference that other links can use to refer to it. <\/p>\n<blockquote>\n<p>It is worth noting that the separate notion of a reference is required here solely because <a href=\"https:\/\/en.wikipedia.org\/wiki\/Circular_definition\" rel=\"noopener noreferrer nofollow\">circular definitions<\/a> are not available in set theory. In fact, the links theory can describe itself without needing a distinct term for a reference \u2014 in other words, a reference is simply a special case of a link.<\/p>\n<\/blockquote>\n<h4>Duplets<\/h4>\n<p>A doublet-link is represented by a duplet (2-tuple or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">ordered pair<\/a>) of references to links. A doublet-link also has its own reference.<\/p>\n<pre><code class=\"python\">L = { 1 , 2 }  L \u00d7 L = {   (1, 1),   (1, 2),   (2, 1),   (2, 2), }<\/code><\/pre>\n<p><strong>Where<\/strong>: <\/p>\n<ul>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/611\/470\/8ad\/6114708ad83523cef2accb96b6ce0822.svg\" width=\"13\" height=\"17\"\/> is the set of references (from the English word \u201cLinks\u201d as in \u201cReferences\u201d).<\/p>\n<\/li>\n<\/ul>\n<p>In this example, the set <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/611\/470\/8ad\/6114708ad83523cef2accb96b6ce0822.svg\" width=\"13\" height=\"17\"\/> contains only <img decoding=\"async\" src=\"\" class=\"formula inline\"\/> references to links, namely <img decoding=\"async\" src=\"\" class=\"formula inline\"\/> and <img decoding=\"async\" src=\"\" class=\"formula inline\"\/>. In other words, in a network of links built on such a set of references, there can be only <img decoding=\"async\" src=\"\" class=\"formula inline\"\/> links.<\/p>\n<p>To obtain all possible values of a link, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cartesian_product\" rel=\"noopener noreferrer nofollow\">the Cartesian product<\/a> of <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/611\/470\/8ad\/6114708ad83523cef2accb96b6ce0822.svg\" width=\"13\" height=\"17\"\/> with itself is used, i.e.,<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L \\times L\" alt=\"L \\times L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4cf\/b42\/066\/4cfb420661d18a96f324dfc46fb6ad30.svg\" width=\"51\" height=\"17\"\/>.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f23\/51b\/fe4\/f2351bfe4d41eb941faf542197d51163.png\" alt=\"alt text\" title=\"\u0420\u0438\u0441. 4. \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1, 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u0443 \u0441\u0432\u044f\u0437\u0435\u0439 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0441\u0435\u0433\u043e 4 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.\" width=\"1032\" height=\"774\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f23\/51b\/fe4\/f2351bfe4d41eb941faf542197d51163.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 4. \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1, 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u0443 \u0441\u0432\u044f\u0437\u0435\u0439 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0441\u0435\u0433\u043e 4 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/752\/178\/3cd\/7521783cd0938c6d1f98667963df7467.png\" alt=\"alt text\" title=\"\u0420\u0438\u0441. 5. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0442\u0440\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439 \u0434\u043b\u044f \u0441\u0435\u0442\u0438 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0432\u044f\u0437\u044f\u043c\u0438, \u044d\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f { 1, 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f.\" width=\"1024\" height=\"1365\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/752\/178\/3cd\/7521783cd0938c6d1f98667963df7467.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 5. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0442\u0440\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439 \u0434\u043b\u044f \u0441\u0435\u0442\u0438 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0432\u044f\u0437\u044f\u043c\u0438, \u044d\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f { 1, 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f.<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439-\u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\lambda: L \\to L \\times L}\" alt=\"\\mathbf{\\lambda: L \\to L \\times L}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f2c\/b3a\/9e6\/f2cb3a9e6a92e192bfb30aa3ab04c374.svg\" width=\"124\" height=\"17\"\/><\/p>\n<\/blockquote>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\to\" alt=\"\\to\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b44\/f07\/bad\/b44f07bad2b7ec1faa314c632129e686.svg\" width=\"20\" height=\"14\"\/>\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Function_(mathematics)\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u0444\u0443\u043d\u043a\u0446\u0438\u044e)<\/a>;<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\lambda}\" alt=\"\\mathbf{\\lambda}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/35c\/a66\/527\/35ca66527c3493632880e4df4e5a76b0.svg\" width=\"11\" height=\"17\"\/>  \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0435\u0442\u044c \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{L}\" alt=\"\\mathbf{L}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/102\/766\/32a\/10276632ae4bfa07367daf235a73c68c.svg\" width=\"14\" height=\"17\"\/> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"1 \\to (1, 1)\" alt=\"1 \\to (1, 1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e20\/117\/3ee\/e201173eeb4173dad6b5d088650dd2d0.svg\" width=\"84\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"2 \\to (2, 2)\" alt=\"2 \\to (2, 2)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bd6\/77c\/115\/bd677c1155f209d676352169d3816f78.svg\" width=\"84\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{3 \\to (1, 2)}\" alt=\"\\mathbf{3 \\to (1, 2)}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/bd1\/42a\/295\/bd142a295ff649cac225e73f1ec6992a.svg\" width=\"92\" height=\"22\"\/><\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/87a\/8a4\/914\/87a8a49142aa21abf813634df99f478c.png\" alt=\"alt text\" title=\"\u0420\u0438\u0441. 6. \u0421\u0435\u0442\u044c \u0438\u0437 \u0442\u0440\u0451\u0445 \u0441\u0432\u044f\u0437\u0435\u0439. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u0433\u0440\u0430\u0444, \u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0442\u044c\u044e \u0441\u0432\u044f\u0437\u0435\u0439.\u00a01-\u044f \u0438 2-\u044f \u0441\u0432\u044f\u0437\u0438 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0431\u0435 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0431\u0435. \u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043d\u0435\u0447\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438.\" width=\"781\" height=\"703\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/87a\/8a4\/914\/87a8a49142aa21abf813634df99f478c.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 6. \u0421\u0435\u0442\u044c \u0438\u0437 \u0442\u0440\u0451\u0445 \u0441\u0432\u044f\u0437\u0435\u0439. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u0433\u0440\u0430\u0444, \u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0442\u044c\u044e \u0441\u0432\u044f\u0437\u0435\u0439.\u00a01-\u044f \u0438 2-\u044f \u0441\u0432\u044f\u0437\u0438 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0431\u0435 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0431\u0435. \u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043d\u0435\u0447\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a45\/b25\/979\/a45b25979018b0847a1cf3ae1e34df60.png\" alt=\"alt text\" title=\"\u0420\u0438\u0441. 7. \u042d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439.\u00a0\u0417\u0434\u0435\u0441\u044c \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437 9 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435\u0433\u043e 3 \u0441\u0432\u044f\u0437\u0438, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 L.\" width=\"1560\" height=\"1186\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a45\/b25\/979\/a45b25979018b0847a1cf3ae1e34df60.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 7. \u042d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439.\u00a0\u0417\u0434\u0435\u0441\u044c \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437 9 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435\u0433\u043e 3 \u0441\u0432\u044f\u0437\u0438, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 L.<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439-\u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0432\u044f\u0437\u0438-\u0434\u0443\u043f\u043b\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442:<\/p>\n<ul>\n<li>\n<p>\u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u0434\u0443\u043f\u043b\u0435\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u0435, \u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u0435\u043e\u0440\u0438\u044f \u0433\u0440\u0430\u0444\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (n-\u043a\u043e\u0440\u0442\u0435\u0436) \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0437 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440;<\/p>\n<\/li>\n<li>\n<p>\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Predicate_(grammar)\" rel=\"noopener noreferrer nofollow\">subject-predicate<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0434\u0443\u043f\u043b\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u0432\u0435\u0440\u0438\u043c, \u043b\u044e\u0431\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u0422\u0440\u0438\u043f\u043b\u0435\u0442\u044b<\/h3>\n<p>\u0421\u0432\u044f\u0437\u044c-\u0442\u0440\u0438\u043f\u043b\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u043c (3-\u043a\u043e\u0440\u0442\u0435\u0436\u0435\u043c) \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<pre><code class=\"python\">L = { 1 , 2 }  L \u00d7 L = {   (1, 1),   (1, 2),   (2, 1),   (2, 2), }  L \u00d7 L \u00d7 L = {   (1, 1, 1),   (1, 1, 2),   (1, 2, 1),   (1, 2, 2),   (2, 1, 1),   (2, 1, 2),   (2, 2, 1),   (2, 2, 2), }<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/43c\/8b1\/b36\/43c8b1b36ce92b6cf1cf2b402efd95d8.png\" alt=\"alt text\" title=\"\u0420\u0438\u0441. 8. \u0422\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u0443\u0431-\u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u0443\u0431 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1 , 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c { 1 , 2 } \u00d7 { 1 , 2 } \u00d7 { 1 , 2 }.\" width=\"1032\" height=\"774\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/43c\/8b1\/b36\/43c8b1b36ce92b6cf1cf2b402efd95d8.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 8. \u0422\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u0443\u0431-\u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u0443\u0431 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1 , 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c { 1 , 2 } \u00d7 { 1 , 2 } \u00d7 { 1 , 2 }.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ca2\/b5e\/f9c\/ca2b5ef9c0d0989a2ba8a8d4f097f184.png\" alt=\"alt text\" title=\"\u0420\u0438\u0441. 9. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1 , 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c { 1 , 2 } \u00d7 { 1 , 2 } \u00d7 { 1 , 2 }. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u043b\u043e, \u0432\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u043a \u0442\u0438\u043f, \u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u0446; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0435\u0448\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439. \" width=\"1024\" height=\"1365\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ca2\/b5e\/f9c\/ca2b5ef9c0d0989a2ba8a8d4f097f184.png\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 9. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1 , 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c { 1 , 2 } \u00d7 { 1 , 2 } \u00d7 { 1 , 2 }. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u043b\u043e, \u0432\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u043a \u0442\u0438\u043f, \u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u0446; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0435\u0448\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439.<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\lambda : L \\to L \\times L \\times L}\" alt=\"\\mathbf{\\lambda : L \\to L \\times L \\times L}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c51\/7e2\/87d\/c517e287d2a7d79c2b935cd4e973523a.svg\" width=\"162\" height=\"17\"\/><\/p>\n<\/blockquote>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\lambda}\" alt=\"\\mathbf{\\lambda}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2de\/458\/b3f\/2de458b3fcb130fb1d0643151ef8037d.svg\" width=\"11\" height=\"17\"\/> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0443\u044e \u0441\u0435\u0442\u044c \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{L}\" alt=\"\\mathbf{L}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e92\/594\/55f\/e9259455f97666907efd09c7ced3d127.svg\" width=\"14\" height=\"17\"\/> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"1 \\to (1, 1, 1)\" alt=\"1 \\to (1, 1, 1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e5b\/d73\/c80\/e5bd73c8055d79fe139111aa2a55e67a.svg\" width=\"103\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"2 \\to (2, 2, 2)\" alt=\"2 \\to (2, 2, 2)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/07d\/19d\/68a\/07d19d68a950f6fbda8f7c8ad162a03f.svg\" width=\"103\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"3 \\to (3, 3, 3)\" alt=\"3 \\to (3, 3, 3)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/48c\/e97\/ca3\/48ce97ca3af3d696ca20be41b206b371.svg\" width=\"103\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{4 \\to (1, 2, 3)}\" alt=\"\\mathbf{4 \\to (1, 2, 3)}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a8f\/daf\/402\/a8fdaf4021ef03e2c46d781083b219b2.svg\" width=\"112\" height=\"22\"\/><\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/76c\/672\/576\/76c6725766a17ea75ebed8e99abd070e.jpeg\" alt=\"alt text\" title=\"\u0420\u0438\u0441. 10. \u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0432 \u0432\u0438\u0434\u0435 \u0446\u0432\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0440\u0433\u0440\u0430\u0444\u0430. \u0412 \u044d\u0442\u043e\u0439 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 4 \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435. \u0423\u0437\u043b\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0432\u044f\u0437\u044f\u043c, \u0430 \u0446\u0432\u0435\u0442\u0430 \u0440\u0435\u0431\u0451\u0440 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0420\u0438\u0441. 9 (\u043a\u0440\u0430\u0441\u043d\u044b\u0439 - from, \u0441\u0438\u043d\u0438\u0439 - type, \u0437\u0435\u043b\u0451\u043d\u044b\u0439 - to).\" width=\"780\" height=\"585\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/76c\/672\/576\/76c6725766a17ea75ebed8e99abd070e.jpeg\" data-blurred=\"true\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441. 10. \u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0432 \u0432\u0438\u0434\u0435 \u0446\u0432\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0440\u0433\u0440\u0430\u0444\u0430. \u0412 \u044d\u0442\u043e\u0439 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 4 \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435. \u0423\u0437\u043b\u044b \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0432\u044f\u0437\u044f\u043c, \u0430 \u0446\u0432\u0435\u0442\u0430 \u0440\u0435\u0431\u0451\u0440 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0441\u0441\u044b\u043b\u043a\u0430\u043c \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0420\u0438\u0441. 9 (\u043a\u0440\u0430\u0441\u043d\u044b\u0439 &#8212; from, \u0441\u0438\u043d\u0438\u0439 &#8212; type, \u0437\u0435\u043b\u0451\u043d\u044b\u0439 &#8212; to).<\/figcaption><\/div>\n<\/figure>\n<p>Triplet-links can perform the same functions as doublet-links. Since triplet-links include an additional reference, that extra element can, for example, be used to indicate the type of link.<\/p>\n<p>For instance, triplet-links can:<\/p>\n<ul>\n<li>\n<p>Link an object, its property, and its value;<\/p>\n<\/li>\n<li>\n<p>Link two links together using a defined relation;<\/p>\n<\/li>\n<li>\n<p>Describe a natural language sentence, for example, using a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Subject%E2%80%93verb%E2%80%93object_word_order\" rel=\"noopener noreferrer nofollow\">subject-verb-object<\/a> model.<\/p>\n<\/li>\n<\/ul>\n<h3>Vectors<\/h3>\n<p>A vector (i.e., a sequence) of link references \u2014 also known as an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a> \u2014 is the general case.\u00a0<\/p>\n<p>In general, a links network is defined as:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\lambda : L \\rightarrow \\underbrace{ L \\times L \\times \\ldots \\times L}_{n}}\" alt=\"\\mathbf{\\lambda : L \\rightarrow \\underbrace{ L \\times L \\times \\ldots \\times L}_{n}}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c7\/f16\/636\/5c7f1663641976ee66d0f70703967ef6.svg\" width=\"209\" height=\"45\"\/><\/p>\n<\/blockquote>\n<p>Where:<\/p>\n<ul>\n<li>\n<p>The <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\\lambda}\" alt=\"\\mathbf{\\lambda}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b2a\/298\/365\/b2a2983658ac09d0fcd4f92eec2b7736.svg\" width=\"11\" height=\"17\"\/> symbol denotes the function that defines the links network;<\/p>\n<\/li>\n<li>\n<p>The <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{L}\" alt=\"\\mathbf{L}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4c9\/a5d\/cc5\/4c9a5dcc5d8c83fdc93af35cf54f0f36.svg\" width=\"14\" height=\"17\"\/> symbol denotes the set of link references.<\/p>\n<\/li>\n<\/ul>\n<p>Example:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"1 \\to (1)\" alt=\"1 \\to (1)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/be3\/043\/b11\/be3043b119b494fff27df2bd70b5f955.svg\" width=\"65\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"2 \\to (2, 2)\" alt=\"2 \\to (2, 2)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/318\/829\/e3c\/318829e3ceaf6ea333f3ab9e248426c2.svg\" width=\"84\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"3 \\to (3, 3, 3)\" alt=\"3 \\to (3, 3, 3)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/390\/88e\/cb1\/39088ecb103b398d3eb81ba270bbf089.svg\" width=\"103\" height=\"22\"\/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{4 \\to (1, 2, 3, 2, 1)}\" alt=\"\\mathbf{4 \\to (1, 2, 3, 2, 1)}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/044\/ec4\/584\/044ec45845d69ce2ab702ba7db156212.svg\" width=\"154\" height=\"22\"\/><\/p>\n<\/blockquote>\n<p>In this example, n-tuples of variable lengths are used as link&#8217;s values. <\/p>\n<p>Sequences (vectors) are, in essence, equivalent in expressive power to the relational model \u2014 a fact that remains to be proven within the developing theory. However, once we observed that doublet-links and triplet-links are sufficient for representing sequences of any size, we hypothesized that there is no need to use sequences directly as they representable by double-links.<\/p>\n<h3>Comparison summary<\/h3>\n<p>The relational data model can represent everything \u2014 even the associative model. In contrast, the graph model excels at representing relationships, but is less effective at representing unique deduplicated sequences.<\/p>\n<p>The associative model can easily represent n-tuples of unlimited length using tuples with\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{n \\geq 2}\" alt=\"\\mathbf{n \\geq 2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/b29\/c29\/6e9\/b29c296e9caa29140c03d5ec5fa2da0d.svg\" width=\"50\" height=\"18\"\/>. It is as capable as graph theory in representing associations and as powerful as the relational model, being able to fully represent any SQL table. Additionally, the associative model can represent strict sequences, allowing any sequence to be encapsulated in a unique single link, which is beneficial for deduplication.<\/p>\n<p>In the relational model, only one relation is needed to mimic the behavior of the associative model, and typically no more than 2\u20133 columns are required aside from an explicit ID or built-in row ID. The ID itself is required in relational model because it is built up on concept of set, for the contrast the links theory builds up on concept of sequence thus explicit ID is not required (and can optionally added if user really needs it).<\/p>\n<p>By definition, the graph model cannot directly create an edge between edges. Thus, it would need either a redefinition or an extension with an unambiguous method for storing unique deduplicated sequences. While sequences might be stored as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple#Tuples_as_nested_sets\" rel=\"noopener noreferrer nofollow\">nested sets<\/a> within the graph model, this approach is not popular. Although the graph model is closest to doublet-links, it still differs by definition.<\/p>\n<p>Using the associative model means there is no longer a need to choose between SQL and NoSQL databases; instead, an associative data store can represent everything in the simplest possible way, with data always kept in its form closest to the original (usually this the normalized form, but denormalization also possible if needed).<\/p>\n<h2>Mathematical introduction to the links theory<\/h2>\n<h3>Introduction<\/h3>\n<p>Now that we have briefly introduced the origins of our work, it is time to delve deeper into the theory.<\/p>\n<blockquote>\n<p>The links theory is being developed as a more fundamental framework compared to set theory or type theory, and as a replacement for relational algebra and graph theory as unifying theory. While type theory is built upon the basic notions of \u201ctype\u201d and \u201cterm\u201d, and set theory on \u201cset\u201d and \u201celement\u201d, the links theory reduces everything to the single concept of a \u201clink\u201d.<\/p>\n<\/blockquote>\n<p>In this section, we will explain the core concepts and terminology used in the links theory. <\/p>\n<p>We will then present the definitions of the links theory within the framework of set theory, and subsequently project these definitions into type theory using the interactive theorem prover Coq. <\/p>\n<p>Finally, we will summarize our findings and outline directions for further research and development of the links theory.<\/p>\n<h4>The links theory<\/h4>\n<p>At the heart of the links theory lies the unified concept of a link. The additional notion of a reference to a link is introduced only for theories that do not support circular definitions \u2014 such as set theory and type theory.<\/p>\n<h4>LinkA link possesses an asymmetrical recursive (fractal) structure, which can be simply expressed as: a link links links. The term \u201casymmetrical\u201d refers to the fact that every link has a direction \u2014 from its source (beginning) to its destination (end).<\/h4>\n<h3>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043e\u0440\u0438\u0438 \u0441\u0432\u044f\u0437\u0435\u0439 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u0435\u043e\u0440\u0438\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432<\/h3>\n<p><strong>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430\u00a0\u0432\u0435\u043a\u0442\u043e\u0440<\/strong>\u00a0\u2014 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0438\u043b\u0438\u00a0\u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u044b\u0439 \u043d\u043e\u043c\u0435\u0440, \u043a\u0430\u0436\u0434\u044b\u0439 \u0438\u0437\u00a0\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0432\u044f\u0437\u0430\u043d \u0441\u00a0\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430\u00a0\u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u0435\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0430: <\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{L \u2286 \u2115_0}\" alt=\"\\mathbf{L \u2286 \u2115_0}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d4b\/359\/be0\/d4b359be04ab5657f765a2ac88cc87ed.svg\" width=\"66\" height=\"20\"\/><\/p>\n<\/blockquote>\n<p><strong>\u0412\u0435\u043a\u0442\u043e\u0440 \u0441\u0441\u044b\u043b\u043e\u043a<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u0432\u0435\u043a\u0442\u043e\u0440, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u0438\u0437\u00a0\u043d\u0443\u043b\u044f \u0438\u043b\u0438\u00a0\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430\u00a0\u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0433\u0434\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0435\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0441\u0441\u044b\u043b\u043e\u043a \u0434\u043b\u0438\u043d\u044b <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"n \u2208 \u2115_0\" alt=\"n \u2208 \u2115_0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d34\/892\/f89\/d34892f89cd830e7b2f50691061d6782.svg\" width=\"59\" height=\"20\"\/>:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{V_n = L^n}\" alt=\"\\mathbf{V_n = L^n}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e85\/8b7\/ef4\/e858b7ef4aa8f53c89dba3da5d719167.svg\" width=\"81\" height=\"20\"\/><\/p>\n<\/blockquote>\n<p>\u0414\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u044c <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L^n\" alt=\"L^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e6\/a4e\/352\/8e6a4e352b6dc6a114223e80ac72c2d1.svg\" width=\"24\" height=\"18\"\/> \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0430\u0441\u0442 \u0432\u0435\u043a\u0442\u043e\u0440 \u0434\u043b\u0438\u043d\u044b <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"n\" alt=\"n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/81d\/8f6\/881\/81d8f6881171ec6b4c77a12c6c4a66db.svg\" width=\"12\" height=\"12\"\/> , \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u0432\u0441\u0435 \u0435\u0433\u043e \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0433\u043e\u00a0\u0436\u0435 \u0442\u0438\u043f\u0430 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/69e\/b3e\/52d\/69eb3e52d0d10df194e08ac1c8fb62fd.svg\" width=\"13\" height=\"17\"\/>.<br \/>\u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L^n\" alt=\"L^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8e6\/a4e\/352\/8e6a4e352b6dc6a114223e80ac72c2d1.svg\" width=\"24\" height=\"18\"\/> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 n\u2011\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/58f\/85a\/448\/58f85a448ce12693a88e51a74cbd355a.svg\" width=\"13\" height=\"17\"\/>. \u042d\u0442\u043e \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u043d\u043e \u043f\u043e\u00a0\u0441\u0443\u0442\u0438 n\u2011\u043a\u043e\u0440\u0442\u0435\u0436\u0443.<\/p>\n<p><strong>\u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u044f<\/strong>\u00a0\u2014 \u044d\u0442\u043e \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u0430\u044f \u043f\u0430\u0440\u0430, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u0438\u0437\u00a0\u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430\u00a0\u0432\u0435\u043a\u0442\u043e\u0440 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441\u0441\u044b\u043b\u043e\u043a.<br \/>\u042d\u0442\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f\u00a0\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438.<br \/>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0439:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{A = L \\times V_n}\" alt=\"\\mathbf{A = L \\times V_n}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9de\/747\/627\/9de747627c4584713bb01bdbe9a56445.svg\" width=\"111\" height=\"19\"\/><\/p>\n<\/blockquote>\n<p><strong>\u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u0438\u043d\u044b n<\/strong> (\u0438\u043b\u0438 n\u2011\u043c\u0435\u0440\u043d\u0430\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c) \u0438\u0437\u00a0\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{anetv^n\\}\" alt=\"\\{anetv^n\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a2\/dbe\/629\/4a2dbe6291659f4a865fa3abf3057490.svg\" width=\"78\" height=\"22\"\/>,<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"anetv^n: L \u2192 V_n\" alt=\"anetv^n: L \u2192 V_n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/557\/ff0\/dcf\/557ff0dcf80e5e51412557f3e4643c99.svg\" width=\"140\" height=\"21\"\/> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"l\" alt=\"l\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ed\/58f\/5b7\/6ed58f5b719972f8a4244b3ae43911cc.svg\" width=\"6\" height=\"17\"\/>\u00a0\u0438\u0437\u00a0\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a0b\/4c1\/a49\/a0b4c1a4959102f4227ab510a22c1781.svg\" width=\"13\" height=\"17\"\/>\u00a0\u0432\u00a0\u0432\u0435\u043a\u0442\u043e\u0440 \u0441\u0441\u044b\u043b\u043e\u043a \u0434\u043b\u0438\u043d\u044b <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"n\" alt=\"n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a90\/9c5\/e4a\/a909c5e4aacb8a775f9c0035834441c3.svg\" width=\"12\" height=\"12\"\/>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0438\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0443 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"V_n\" alt=\"V_n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c88\/daf\/d7f\/c88dafd7f5e1e21e63cbfcb3785550b9.svg\" width=\"22\" height=\"20\"\/>, \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u0442 \u0442\u043e\u0447\u043a\u0438 \u0432\u00a0n\u2011\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435.<br \/><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"n\" alt=\"n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a90\/9c5\/e4a\/a909c5e4aacb8a775f9c0035834441c3.svg\" width=\"12\" height=\"12\"\/> \u0432\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"anetv^n\" alt=\"anetv^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ba\/f2d\/c68\/5baf2dc683c8181e277f46b8b64c4869.svg\" width=\"58\" height=\"18\"\/> \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430\u00a0\u0442\u043e, \u0447\u0442\u043e\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u0435\u043a\u0442\u043e\u0440\u0430, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"n\" alt=\"n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a90\/9c5\/e4a\/a909c5e4aacb8a775f9c0035834441c3.svg\" width=\"12\" height=\"12\"\/> \u0441\u0441\u044b\u043b\u043e\u043a.<br \/>\u041a\u0430\u0436\u0434\u0430\u044f n\u2011\u043c\u0435\u0440\u043d\u0430\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0447\u0435\u043a \u0432\u00a0n\u2011\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435.<\/p>\n<p><strong>\u0421\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439:<\/strong> <\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{\u222a_f \\{anetv^n | n \u2208 \u2115_0\\} \u2286 A}\" alt=\"\\mathbf{\u222a_f \\{anetv^n | n \u2208 \u2115_0\\} \u2286 A}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d4b\/c6a\/643\/d4bc6a643fd9587a897fe742e42c0b2a.svg\" width=\"223\" height=\"22\"\/><\/p>\n<\/blockquote>\n<p>\u0417\u0434\u0435\u0441\u044c <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\u222a\" alt=\"\u222a\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/649\/13d\/c54\/64913dc54812a2ab04e153c0139d7ba6.svg\" width=\"13\" height=\"15\"\/> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432\u00a0\u0441\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u0435<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\{anetv^n\\}\" alt=\"\\{anetv^n\\}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/4a2\/dbe\/629\/4a2dbe6291659f4a865fa3abf3057490.svg\" width=\"78\" height=\"22\"\/>, <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\u2286\" alt=\"\u2286\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a1b\/a27\/e3e\/a1ba27e3e452b26c7612f562fab2d88f.svg\" width=\"15\" height=\"18\"\/> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u00ab\u044d\u0442\u043e \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u00bb, \u0430\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/406\/c21\/65d\/406c2165d8c7ee7f53a19daf3ebcad54.svg\" width=\"15\" height=\"18\"\/>\u00a0\u2014 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0446\u0438\u0439.<br \/>\u042d\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442 \u043e\u00a0\u0442\u043e\u043c, \u0447\u0442\u043e\u00a0\u0432\u0441\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u044b, \u0444\u0443\u043d\u043a\u0446\u0438\u0439\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"anetv^n\" alt=\"anetv^n\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ba\/f2d\/c68\/5baf2dc683c8181e277f46b8b64c4869.svg\" width=\"58\" height=\"18\"\/>, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u0432\u00a0\u0432\u0438\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f, \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u0434\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"A\" alt=\"A\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/406\/c21\/65d\/406c2165d8c7ee7f53a19daf3ebcad54.svg\" width=\"15\" height=\"18\"\/>.<\/p>\n<p><strong>\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 (\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440 \u0438\u043b\u0438\u00a0\u0434\u0432\u0443\u043c\u0435\u0440\u043d\u044b\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432) \u0441\u0441\u044b\u043b\u043e\u043a:<\/strong> <\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{D = L^2}\" alt=\"\\mathbf{D = L^2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fe0\/558\/c19\/fe0558c1937f1af0e5e1d4775a5e3459.svg\" width=\"69\" height=\"21\"\/><\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u0441\u0435\u0445 \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"(L, L)\" alt=\"(L, L)\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6da\/4d3\/3c6\/6da4d33c6ac154e1494a7697bab1fb8c.svg\" width=\"51\" height=\"22\"\/>, \u0438\u043b\u0438\u00a0\u0432\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u0441\u0442\u0435\u043f\u0435\u043d\u044c <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L\" alt=\"L\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a0b\/4c1\/a49\/a0b4c1a4959102f4227ab510a22c1781.svg\" width=\"13\" height=\"17\"\/>\u00a0.<\/p>\n<p><strong>\u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 (\u0438\u043b\u0438 \u0434\u0432\u0443\u043c\u0435\u0440\u043d\u0430\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c):<\/strong> <\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{anetd: L \u2192 L^2}\" alt=\"\\mathbf{anetd: L \u2192 L^2}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/43d\/47c\/c8d\/43d47cc8d060c4e0eb17153e2a24753d.svg\" width=\"143\" height=\"21\"\/><\/p>\n<\/blockquote>\n<p>\u041a\u0430\u0436\u0434\u0430\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0442\u043e\u0447\u0435\u043a \u0432\u00a0\u0434\u0432\u0443\u0445\u043c\u0435\u0440\u043d\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0435.<\/p>\n<p><strong>\u041f\u0443\u0441\u0442\u043e\u0439 \u0432\u0435\u043a\u0442\u043e\u0440 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u043f\u0443\u0441\u0442\u044b\u043c \u043a\u043e\u0440\u0442\u0435\u0436\u0435\u043c:<\/strong> <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"()\" alt=\"()\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6e3\/86c\/822\/6e386c8222f479f1f9adb78524e078c7.svg\" width=\"15\" height=\"22\"\/> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043a\u0430\u043a <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\u2205\" alt=\"\u2205\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0a7\/742\/e37\/0a7742e378e2661a73fa374b8e7aa620.svg\" width=\"10\" height=\"20\"\/>.<\/p>\n<p><strong>\u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440:<\/strong> <\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"\\mathbf{anetl: L \u2192 NP}\\textbf{, \u0433\u0434\u0435 }\\mathbf{NP = \\{(\u2205, \u2205) | (l, np), l \u2208 L, np \u2208 NP\\}\u00a0}\" alt=\"\\mathbf{anetl: L \u2192 NP}\\textbf{, \u0433\u0434\u0435 }\\mathbf{NP = \\{(\u2205, \u2205) | (l, np), l \u2208 L, np \u2208 NP\\}\u00a0}\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c00\/625\/b5a\/c00625b5ad85b12bbc34a7e50d203429.svg\" width=\"530\" height=\"23\"\/><\/p>\n<\/blockquote>\n<p>\u042d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437\u00a0\u043f\u0443\u0441\u0442\u044b\u0445 \u043f\u0430\u0440, \u0438 \u043f\u0430\u0440 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u043e\u0434\u0438\u043d \u0438\u043b\u0438\u00a0\u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0432\u0435\u043a\u0442\u043e\u0440 \u0434\u043b\u0438\u043d\u044b <img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"n \u2208 \u2115_0\" alt=\"n \u2208 \u2115_0\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e38\/f7d\/3c6\/e38f7d3c6a31a73c72e6b79142c071c8.svg\" width=\"59\" height=\"20\"\/> \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a\u00a0\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0430\u0440\u044b.<\/p>\n<h3>Projection of the links theory into type theory (coq) via set theory<\/h3>\n<h4>About Coq<\/h4>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Coq\" rel=\"noopener noreferrer nofollow\">Coq<\/a> is an interactive theorem prover based on higher-order type theory, also known as the Calculus of Inductive Constructions (CIC). It is a powerful environment for formalizing complex mathematical theorems, checking proofs for correctness, and extracting executable code from formally verified specifications. Coq is widely used both in academia for the formalization of mathematics and in the IT industry for the verification of software and hardware.<\/p>\n<p>The decision to use Coq to describe the links theory within type theory was driven by the need for rigorous formalization of proofs and assurance of logical correctness during the development of the links theory. Coq enables the precise expression of properties and operations on links through its robust type system and advanced proof mechanisms.<\/p>\n<p>In anticipation of extensive work aimed at proving the equivalence of the relational model and the associative network of doublets, this section presents the initial steps undertaken using the Coq proof system. In the first phase, our goal is to formalize the structures of associative networks by defining the basic types, functions, and structures within Coq.<\/p>\n<h4>Definitions of associative networks<\/h4>\n<p><a href=\"https:\/\/github.com\/deep-foundation\/deep-theory\/blob\/main\/associative_proofs\/coq\/ANetDefs.v\" rel=\"noopener noreferrer nofollow\">[Link to source code]<\/a><\/p>\n<pre><code class=\"matlab\">Require Import PeanoNat. Require Import Coq.Init.Nat. Require Import Vector. Require Import List. Require Import Coq.Init.Datatypes. Import ListNotations. Import VectorNotations.  (* Set of vector references: L \u2286 \u2115\u2080 *) Definition L := nat.  (* Default value for L: zero *) Definition LDefault : L := 0.  (* Set of vectors of references of length n \u2208 \u2115\u2080: Vn \u2286 L\u207f *) Definition Vn (n : nat) := t L n.  (* Default value for Vn *) Definition VnDefault (n : nat) : Vn n := Vector.const LDefault n.  (* Set of all associations: A = L \u00d7 Vn *) Definition A (n : nat) := prod L (Vn n).  (* Associative network of vectors of length n (or n-dimensional associative network) from the family of functions {anetv\u207f : L \u2192 Vn} *) Definition ANetVf (n : nat) := L -&gt; Vn n.  (* Associative network of vectors of length n (or n-dimensional associative network) as a sequence *) Definition ANetVl (n : nat) := list (Vn n).  (* Nested ordered pairs *) Definition NP := list L.  (* Associative network of nested ordered pairs: anetl : L \u2192 NP *) Definition ANetLf := L -&gt; NP.  (* Associative network of nested ordered pairs as a sequence of nested ordered pairs *) Definition ANetLl := list NP.  (* Duplet of references *) Definition D := prod L L.  (* Default value for D: a pair of two LDefault values, used to denote an empty duplet *) Definition DDefault : D := (LDefault, LDefault).  (* Associative network of duplets (or two-dimensional associative network): anetd : L \u2192 L\u00b2 *) Definition ANetDf := L -&gt; D.  (* Associative network of duplets (or two-dimensional associative network) as a sequence of duplets *) Definition ANetDl := list D.<\/code><\/pre>\n<h4>Functions for converting associative network<\/h4>\n<pre><code class=\"matlab\">(* Function to convert Vn to NP *) Fixpoint VnToNP {n : nat} (v : Vn n) : NP :=   match v with   | Vector.nil _ =&gt; List.nil   | Vector.cons _ h _ t =&gt; List.cons h (VnToNP t)   end.  (* Function to convert ANetVf to ANetLf *) Definition ANetVfToANetLf {n : nat} (a: ANetVf n) : ANetLf :=   fun id =&gt; VnToNP (a id).  (* Function to convert ANetVl to ANetLl *) Definition ANetVlToANetLl {n: nat} (net: ANetVl n) : ANetLl :=   map VnToNP net.  (* Function to convert NP to Vn, returning an option *) Fixpoint NPToVnOption (n: nat) (p: NP) : option (Vn n) :=   match n, p with   | 0, List.nil =&gt; Some (Vector.nil nat)   | S n', List.cons f p' =&gt;        match NPToVnOption n' p' with       | None =&gt; None       | Some t =&gt; Some (Vector.cons nat f n' t)       end   | _, _ =&gt; None   end.  (* Function to convert NP to Vn using VnDefault *) Definition NPToVn (n: nat) (p: NP) : Vn n :=   match NPToVnOption n p with   | None =&gt; VnDefault n   | Some t =&gt; t   end.  (* Function to convert ANetLf to ANetVf *) Definition ANetLfToANetVf { n: nat } (net: ANetLf) : ANetVf n :=   fun id =&gt; match NPToVnOption n (net id) with             | Some t =&gt; t             | None =&gt; VnDefault n             end.  (* Function to convert ANetLl to ANetVl *) Definition ANetLlToANetVl {n: nat} (net : ANetLl) : ANetVl n :=   map (NPToVn n) net.  (* Function to convert NP to ANetDl with an index offset *) Fixpoint NPToANetDl_ (offset: nat) (np: NP) : ANetDl :=   match np with   | nil =&gt; nil   | cons h nil =&gt; cons (h, offset) nil   | cons h t =&gt; cons (h, S offset) (NPToANetDl_ (S offset) t)   end.  (* Function to convert NP to ANetDl *) Definition NPToANetDl (np: NP) : ANetDl := NPToANetDl_ 0 np.  (* Function to append NP to the tail of ANetDl *) Definition AddNPToANetDl (anet: ANetDl) (np: NP) : ANetDl :=   app anet (NPToANetDl_ (length anet) np).  (* Function that removes the head of anetd and returns the tail starting at offset *) Fixpoint ANetDl_behead (anet: ANetDl) (offset : nat) : ANetDl :=   match offset with   | 0 =&gt; anet   | S n' =&gt;     match anet with     | nil =&gt; nil     | cons h t =&gt; ANetDl_behead t n'     end   end.  (* Function to convert ANetDl to NP with indexing starting at the beginning of ANetDl from offset *) Fixpoint ANetDlToNP_ (anet: ANetDl) (offset: nat) (index: nat): NP :=   match anet with   | nil =&gt; nil   | cons (x, next_index) tail_anet =&gt;     if offset =? index then       cons x (ANetDlToNP_ tail_anet (S offset) next_index)     else       ANetDlToNP_ tail_anet (S offset) index   end.  (* Function to read NP from ANetDl by the duplet index *) Definition ANetDl_readNP (anet: ANetDl) (index: nat) : NP :=   ANetDlToNP_ anet 0 index.  (* Function to convert ANetDl to NP starting from the head of the anet list *) Definition ANetDlToNP (anet: ANetDl) : NP := ANetDl_readNP anet 0.  (*   Now everything is ready for converting the associative network of nested ordered pairs anetl : L \u2192 NP   into the associative network of duplets anetd : L \u2192 L\u00b2.      This conversion can be done in different ways: either preserving the original references to vectors   or with reindexing. Reindexing can be omitted if one writes an additional function for the duplet associative network   that returns the nested ordered pair by its reference. *)  (* Function to add ANetLl to ANetDl *) Fixpoint AddANetLlToANetDl (anetd: ANetDl) (anetl: ANetLl) : ANetDl :=   match anetl with   | nil =&gt; anetd   | cons h t =&gt; AddANetLlToANetDl (AddNPToANetDl anetd h) t   end.  (* Function to convert ANetLl to ANetDl *) Definition ANetLlToANetDl (anetl: ANetLl) : ANetDl :=   match anetl with   | nil =&gt; nil   | cons h t =&gt; AddANetLlToANetDl (NPToANetDl h) t   end.  (* Function to find NP in the tail of ANetDl starting at offset by its ordinal number.    Returns the NP offset. *) Fixpoint ANetDl_offsetNP_ (anet: ANetDl) (offset: nat) (index: nat) : nat :=   match anet with   | nil =&gt; offset + (length anet)   | cons (_, next_index) tail_anet =&gt;     match index with     | O =&gt; offset     | S index' =&gt;        if offset =? next_index then         ANetDl_offsetNP_ tail_anet (S offset) index'       else         ANetDl_offsetNP_ tail_anet (S offset) index     end   end.  (* Function to find NP in ANetDl by its ordinal number.    Returns the NP offset. *) Definition ANetDl_offsetNP (anet: ANetDl) (index: nat) : nat :=   ANetDl_offsetNP_ anet 0 index.  (* Function to convert ANetVl to ANetDl *) Definition ANetVlToANetDl {n : nat} (anetv: ANetVl n) : ANetDl :=   ANetLlToANetDl (ANetVlToANetLl anetv).  (*   Now everything is ready for converting the duplet associative network anetd : L \u2192 L\u00b2   into the associative network of nested ordered pairs anetl : L \u2192 NP.      We will perform this conversion while preserving the original references to vectors.   Reindexing can be omitted because there is the function ANetDl_offsetNP for the duplet associative network   that returns the offset of the nested ordered pair by its reference. *)  (* Function that removes the first NP from ANetDl and returns the tail *) Fixpoint ANetDl_beheadNP (anet: ANetDl) (offset: nat) : ANetDl :=   match anet with   | nil =&gt; nil   | cons (_, next_index) tail_anet =&gt;     if offset =? next_index then (* end of NP *)       tail_anet     else  (* NP not ended yet *)       ANetDl_beheadNP tail_anet (S offset)   end.  (* Function to convert NP and ANetDl with an offset into ANetLl *) Fixpoint ANetDlToANetLl_ (anetd: ANetDl) (np: NP) (offset: nat) : ANetLl :=   match anetd with   | nil =&gt; nil (* discard NP even if incomplete *)   | cons (x, next_index) tail_anet =&gt;     if offset =? next_index then (* end of NP, move to the next NP *)       cons (app np (cons x nil)) (ANetDlToANetLl_ tail_anet nil (S offset))     else  (* NP not finished yet, continue parsing the duplet network *)       ANetDlToANetLl_ tail_anet (app np (cons x nil)) (S offset)   end.  (* Function to convert ANetDl to ANetLl *) Definition ANetDlToANetLl (anetd: ANetDl) : ANetLl :=   ANetDlToANetLl_ anetd nil LDefault.<\/code><\/pre>\n<h4>Predicates of equivalence for associative networks<\/h4>\n<pre><code class=\"matlab\">(* The definition ANetVf_equiv introduces a predicate for the equivalence of two associative networks of vectors of length n,    anet1 and anet2 of type ANetVf.     This predicate describes the property of \"equivalence\" for such networks.    It asserts that anet1 and anet2 are considered \"equivalent\" if, for every reference id, the vector associated with id in anet1    exactly matches the vector associated with the same id in anet2. *) Definition ANetVf_equiv {n: nat} (anet1: ANetVf n) (anet2: ANetVf n) : Prop :=   forall id, anet1 id = anet2 id.  (* The definition ANetVl_equiv_Vl introduces a predicate for the equivalence of two associative networks of vectors of length n,    anet1 and anet2 of type ANetVl. *) Definition ANetVl_equiv_Vl {n: nat} (anet1: ANetVl n) (anet2: ANetVl n) : Prop :=   anet1 = anet2.  (* Equivalence predicate for associative networks of duplets ANetDf *) Definition ANetDf_equiv (anet1: ANetDf) (anet2: ANetDf) : Prop := forall id, anet1 id = anet2 id.  (* Equivalence predicate for associative networks of duplets ANetDl *) Definition ANetDl_equiv (anet1: ANetDl) (anet2: ANetDl) : Prop := anet1 = anet2.<\/code><\/pre>\n<h4>Lemmas of equivalence of associative networks<\/h4>\n<pre><code class=\"matlab\">(* Lemma on preservation of vector length in the associative network *) Lemma Vn_dim_preserved : forall {l: nat} (t: Vn l), List.length (VnToNP t) = l. Proof.   intros l t.   induction t.   - simpl. reflexivity.   - simpl. rewrite IHt. reflexivity. Qed.   (* Lemma on the mutual inversion of the functions NPToVnOption and VnToNP     H_inverse proves that every Vn vector can be converted losslessly to an NP    using VnToNP and then back to Vn using NPToVnOption.     Formally, forall n: nat, forall t: Vn n, NPToVnOption n (VnToNP t) = Some t states that    for every natural number n and each Vn vector of length n,    we can convert Vn to NP using VnToNP,    then convert the result back to Vn using NPToVnOption n,    and ultimately obtain the same Vn vector we started with.     This property is very important because it guarantees that these two functions    form an inverse pair on the set of convertible vectors Vn and NP.    When you apply both functions to values in this set, you end up with the original value.    This means that no information is lost during the transformations,    so you can freely convert between Vn and NP as required in implementations or proofs. *) Lemma H_inverse: forall n: nat, forall t: Vn n, NPToVnOption n (VnToNP t) = Some t. Proof.   intros n.   induction t as [| h n' t' IH].   - simpl. reflexivity.   - simpl. rewrite IH. reflexivity. Qed.   (*    The Wrapping and Recovery Theorem for the Associative Network of Vectors:     Let an associative network of vectors of length n be given, denoted as anetv\u207f : L \u2192 V\u207f.    Define an operation that maps this network to the associative network of nested ordered pairs anetl : L \u2192 NP,    where NP = {(\u2205,\u2205) | (l, np), l \u2208 L, np \u2208 NP}.    Then define the inverse mapping from the associative network of nested ordered pairs back to the associative network of vectors of length n.     The theorem states:     For any associative network of vectors of length n, anetv\u207f, applying the transformation to the associative network    of nested ordered pairs and then the inverse transformation back to the associative network of vectors of length n    recovers the original network anetv\u207f.    In other words:         \u2200 anetv\u207f : L \u2192 V\u207f, inverse(forward(anetv\u207f)) = anetv\u207f. *) Theorem anetf_equiv_after_transforms : forall {n: nat} (anet: ANetVf n),   ANetVf_equiv anet (fun id =&gt; match NPToVnOption n ((ANetVfToANetLf anet) id) with                             | Some t =&gt; t                             | None   =&gt; anet id                             end). Proof.   intros n net id.   unfold ANetVfToANetLf.   simpl.   rewrite H_inverse.   reflexivity. Qed.   (* Lemma on preservation of the length of NP lists in the duplet associative network *) Lemma NP_dim_preserved : forall (offset: nat) (np: NP),      length np = length (NPToANetDl_ offset np). Proof.   intros offset np.   generalize dependent offset.    induction np as [| n np' IHnp']; intros offset.   - simpl. reflexivity.   - destruct np' as [| m np'']; simpl; simpl in IHnp'.     + reflexivity.     + rewrite IHnp' with (offset := S offset). reflexivity. Qed.<\/code><\/pre>\n<h4>Examples of conversions between associative networks<\/h4>\n<pre><code class=\"matlab\">(* Notation for list notation *) Notation \"{ }\" := (nil) (at level 0). Notation \"{ x , .. , y }\" := (cons x .. (cons y nil) ..) (at level 0).  (* Three-dimensional associative network *) Definition complexExampleNet : ANetVf 3 :=   fun id =&gt; match id with   | 0 =&gt; [0; 0; 0]   | 1 =&gt; [1; 1; 2]   | 2 =&gt; [2; 4; 0]   | 3 =&gt; [3; 0; 5]   | 4 =&gt; [4; 1; 1]   | S _ =&gt; [0; 0; 0]   end.  (* Vectors of references *) Definition exampleTuple0 : Vn 0 := []. Definition exampleTuple1 : Vn 1 := [0]. Definition exampleTuple4 : Vn 4 := [3; 2; 1; 0].  (* Conversion of vectors of references into nested ordered pairs (lists) *) Definition nestedPair0 := VnToNP exampleTuple0. Definition nestedPair1 := VnToNP exampleTuple1. Definition nestedPair4 := VnToNP exampleTuple4.  Compute nestedPair0.  (* Expected result: { } *) Compute nestedPair1.  (* Expected result: {0} *) Compute nestedPair4.  (* Expected result: {3, 2, 1, 0} *)  (* Computing the values of the converted function of the three-dimensional associative network *) Compute (ANetVfToANetLf complexExampleNet) 0. (* Expected result: {0, 0, 0} *) Compute (ANetVfToANetLf complexExampleNet) 1. (* Expected result: {1, 1, 2} *) Compute (ANetVfToANetLf complexExampleNet) 2. (* Expected result: {2, 4, 0} *) Compute (ANetVfToANetLf complexExampleNet) 3. (* Expected result: {3, 0, 5} *) Compute (ANetVfToANetLf complexExampleNet) 4. (* Expected result: {4, 1, 1} *) Compute (ANetVfToANetLf complexExampleNet) 5. (* Expected result: {0, 0, 0} *)  (* Associative network of nested ordered pairs *) Definition testPairsNet : ANetLf :=   fun id =&gt; match id with   | 0 =&gt; {5, 0, 8}   | 1 =&gt; {7, 1, 2}   | 2 =&gt; {2, 4, 5}   | 3 =&gt; {3, 1, 5}   | 4 =&gt; {4, 2, 1}   | S _ =&gt; {0, 0, 0}   end.  (* Converted associative network of nested ordered pairs into a three-dimensional associative network (dimensions must match) *) Definition testTuplesNet : ANetVf 3 :=   ANetLfToANetVf testPairsNet.  (* Computing the values of the converted function of the associative network of nested ordered pairs *) Compute testTuplesNet 0.   (* Expected result: [5; 0; 8] *) Compute testTuplesNet 1.   (* Expected result: [7; 1; 2] *) Compute testTuplesNet 2.   (* Expected result: [2; 4; 5] *) Compute testTuplesNet 3.   (* Expected result: [3; 1; 5] *) Compute testTuplesNet 4.   (* Expected result: [4; 2; 1] *) Compute testTuplesNet 5.   (* Expected result: [0; 0; 0] *)  (* Conversion of nested ordered pairs into the associative network of duplets *) Compute NPToANetDl { 121, 21, 1343 }. (* Should return: {(121, 1), (21, 2), (1343, 2)} *)  (* Adding nested ordered pairs to the associative network of duplets *) Compute AddNPToANetDl {(121, 1), (21, 2), (1343, 2)} {12, 23, 34}.  (* Expected result: {(121, 1), (21, 2), (1343, 2), (12, 4), (23, 5), (34, 5)} *)  (* Conversion of the associative network of duplets into nested ordered pairs *) Compute ANetDlToNP {(121, 1), (21, 2), (1343, 2)}.  (* Expected result: {121, 21, 1343} *)    Compute ANetDlToNP {(121, 1), (21, 2), (1343, 2), (12, 4), (23, 5), (34, 5)}.  (* Expected result: {121, 21, 1343} *)  (* Reading nested ordered pairs from the associative network of duplets by the duplet index (start of the nested ordered pair) *) Compute ANetDl_readNP {(121, 1), (21, 2), (1343, 2), (12, 4), (23, 5), (34, 5)} 0. (* Expected result: {121, 21, 1343} *)  Compute ANetDl_readNP {(121, 1), (21, 2), (1343, 2), (12, 4), (23, 5), (34, 5)} 3. (* Expected result: {12, 23, 34} *)  (* Defining an associative network of nested ordered pairs *) Definition test_anetl := { {121, 21, 1343}, {12, 23}, {34}, {121, 21, 1343}, {12, 23}, {34} }.  (* Converted associative network of nested ordered pairs into the associative network of duplets *) Definition test_anetd := ANetLlToANetDl test_anetl.  (* Computing the converted associative network of nested ordered pairs into the associative network of duplets *) Compute test_anetd. (* Expected result:  {(121, 1), (21, 2), (1343, 2),   (12, 4), (23, 4),   (34, 5),   (121, 7), (21, 8), (1343, 8),   (12, 10), (23, 10),   (34, 11)} *)  (* Converting the associative network of nested ordered pairs into the associative network of duplets and back into test_anetl *)  Compute ANetDlToANetLl test_anetd. (* Expected result:   {{121, 21, 1343}, {12, 23}, {34}, {121, 21, 1343}, {12, 23}, {34}}  *)  (* Computing the offset of nested ordered pairs in the associative network of duplets by their ordinal number *) Compute ANetDl_offsetNP test_anetd 0.   (* Expected result: 0 *) Compute ANetDl_offsetNP test_anetd 1.   (* Expected result: 3 *) Compute ANetDl_offsetNP test_anetd 2.   (* Expected result: 5 *) Compute ANetDl_offsetNP test_anetd 3.   (* Expected result: 6 *) Compute ANetDl_offsetNP test_anetd 4.   (* Expected result: 9 *) Compute ANetDl_offsetNP test_anetd 5.   (* Expected result: 11 *) Compute ANetDl_offsetNP test_anetd 6.   (* Expected result: 12 *) Compute ANetDl_offsetNP test_anetd 7.   (* Expected result: 12 *)  (* Defining a three-dimensional associative network as a sequence of vectors of length 3 *) Definition test_anetv : ANetVl 3 :=   { [0; 0; 0], [1; 1; 2], [2; 4; 0], [3; 0; 5], [4; 1; 1], [0; 0; 0] }.  (* Converted three-dimensional associative network into the associative network of duplets via the associative network of nested ordered pairs *) Definition test_anetdl : ANetDl := ANetVlToANetDl test_anetv.  (* Computing the three-dimensional associative network converted into the associative network of duplets via the associative network of nested ordered pairs *) Compute test_anetdl. (* Expected result: { (0, 1), (0, 2), (0, 2),   (1, 4), (1, 5), (2, 5),   (2, 7), (4, 8), (0, 8),   (3, 10), (0, 11), (5, 11),   (4, 13), (1, 14), (1, 14),   (0, 16), (0, 17), (0, 17)}  *)  (* Converted three-dimensional associative network into the associative network of duplets via the associative network of nested ordered pairs and then back into a three-dimensional associative network *) Definition result_TuplesNet : ANetVl 3 :=   ANetLlToANetVl (ANetDlToANetLl test_anetdl).  (* Final check of the equivalence of associative networks *) Compute result_TuplesNet. (* Expected result:   { [0; 0; 0], [1; 1; 2], [2; 4; 0], [3; 0; 5], [4; 1; 1], [0; 0; 0] } *)<\/code><\/pre>\n<h2>Practical implementation<\/h2>\n<p>There are several practical implementations:\u00a0<a href=\"http:\/\/github.com\/deep-foundation\/\" rel=\"noopener noreferrer nofollow\">Deep<\/a>, <a href=\"https:\/\/github.com\/linksplatform\" rel=\"noopener noreferrer nofollow\">LinksPlatform<\/a> and <a href=\"https:\/\/github.com\/netkeep80\/jsonRVM\" rel=\"noopener noreferrer nofollow\">the model of relations<\/a>.<\/p>\n<h3>Deep<\/h3>\n<p><a href=\"http:\/\/github.com\/deep-foundation\/\" rel=\"noopener noreferrer nofollow\">Deep<\/a>\u00a0is a system based on the links theory. In links theory, links can be used to represent any data or knowledge, as well as to perform programming. Deep is built around this philosophy: in Deep, everything is a link. However, if we divide these links into two categories, we have data itself and behavior. Behavior \u2014 represented by code in Deep \u2014 is stored in the associative store as links, and for execution it is passed to a Docker container of the corresponding programming language, where it runs in isolation and safely. All communication between different parts of the code is carried out through links in the store (database), making the database a universal data-based API (in contrast to the traditional practice of calling functions and methods). At present, PostgreSQL is used as the associative store in Deep, which will later be replaced by a data engine based on doublets and triplets from LinksPlatform.<\/p>\n<p>Deep makes all software on the planet interoperable by representing all its parts as links. It is also possible to store any data and code together, linking events or actions on various types of associations with the corresponding code that is executed to handle those events. Each handler can retrieve the necessary links from the associative store and insert\/update\/delete links in it, which may trigger further cascade execution of handlers.<\/p>\n<p>The\u00a0<code>links<\/code>\u00a0table in Deep\u2019s PostgreSQL database contains records that can be interpreted as links. They have columns such as\u00a0<code>id<\/code>,\u00a0<code>type_id<\/code>,\u00a0<code>from_id<\/code>, and\u00a0<code>to_id<\/code>. The links types help the developer of associative packages predefine the semantics of the relationships between various elements, ensuring an unambiguous understanding of links by both people and code in the associative packages. In addition to the\u00a0<code>links<\/code>\u00a0table, the system also includes tables named\u00a0<code>numbers<\/code>,\u00a0<code>strings<\/code>, and\u00a0<code>objects<\/code>\u00a0for storing numeric, string, and JSON values, respectively. Each link can be associated with only one value. This is temporary solution, that is used until Deep will not migrate to use of LinksPlatform as a database engine. Once migration is complete all these seemingly basic types will be built from the ground up using only links. It will allow to use deduplication (that arises as a consequence of the links theory) and deep understanding of values inner structure. Also it is planned to add indexing of such complex values represented by links, to improve performance to make it as fast or faster than current PostgreSQL implementation.<\/p>\n<h3>LinksPlatfrom<\/h3>\n<p><a href=\"https:\/\/github.com\/linksplatform\" rel=\"noopener noreferrer nofollow\">LinksPlatfrom<\/a>\u00a0is a cross-platform, multi-language framework aimed at providing a low-level implementation of associativity in the form of a database engine constructor. For example, at present we have a <a href=\"https:\/\/github.com\/linksplatform\/Comparisons.PostgreSQLVSDoublets\" rel=\"noopener noreferrer nofollow\">benchmark<\/a> that compares the implementation of doublets in PostgreSQL with a similar implementation in pure Rust\/C++; the leading implementation in Rust outperforms PostgreSQL by over 200 times in write operations and over 1000 times in read operations.<\/p>\n<h3>The model of relations<\/h3>\n<p><a href=\"https:\/\/github.com\/netkeep80\/jsonRVM\" rel=\"noopener noreferrer nofollow\">The model of relations<\/a>\u00a0is a meta-programming language based on representing a program as a three-dimensional associative network. The model of relations adheres to entity-oriented programming, where the entity is used as the single fundamental concept \u2014 that is, it assumes that everything is an entity and there is nothing besides entities.<\/p>\n<p>In the model of relations, an entity, depending on its internal constitutive principle, can be either a structure (object) or a function (method). Unlike the well-known ER model, which uses two basic concepts \u2014 entity and relation \u2014 to represent the database schema, in the model of relations the entity and the relation are essentially the same. This representation allows one to describe not only the external relationships of an entity, but also its internal model \u2014 the model of relationships.<\/p>\n<p>An entity, in its internal principle, is triune (threefold, consisting of three elements) because it is a synthesis of three aspects (qualities) of other entities (or of itself).<\/p>\n<p><a href=\"https:\/\/github.com\/netkeep80\/jsonRVM\" rel=\"noopener noreferrer nofollow\">jsonRVM<\/a>\u00a0is a multithreaded virtual machine for executing the JSON projection of the model of relations. The model of relations, when represented as JSON, allows programs to be written directly in JSON. This representation is a hybrid of data and code segments and makes it easy to deserialize\/execute\/serialize the projection of the model of relations, as well as to use JSON editors for programming. In the execution process of the model of relations, the meta-program can not only process data but also generate multithreaded programs and meta-programs, and either execute them immediately or export them as JSON.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this article, we examined the mathematical foundations of relational algebra and graph theory, and presented the definitions of the links theory in terms of set theory and its projection into type theory. We also defined a set of functions and lemmas necessary for proving the possibility of an equivalent conversion from any vector\/sequence into nested doublet-links and back. This means that only one formula is sufficient to represent any possible type of information:<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L \\to L^2\" alt=\"L \\to L^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42d\/52f\/71e\/42d52f71e0454feb23d2d4d6773ab933.svg\" width=\"66\" height=\"21\"\/><\/p>\n<\/blockquote>\n<p>Thus, this forms the basis for testing the hypothesis that any other data structure can be represented by doublet-links. In other words, doublet-links are sufficient to represent any tables, graphs, strings, arrays, lists, numbers, sound, images, videos, and much more.<\/p>\n<p>We continue to make progress in synchronizing meaning between our three projects and among the people in our associative community. These projects are designed to bring associativity into the world and make it useful for humanity. This article is another iteration of our discussion, allowing us to agree on a unified meaning of words and terms within the general associative theory. We believe this theory can become a meta-language on which is already used by people and machines to communicate.<\/p>\n<p>With each further refinement, we will be one step closer to speaking a common language and making this idea more understandable to everyone. This theory will also be useful for various optimizations in the associative implementations under development, and in the future, for the design of associative chips (or coprocessors) to accelerate operations on data represented as links.<\/p>\n<h3>Plans for the future<\/h3>\n<p>This article has demonstrated only a small part of all the developments in the links theory that have accumulated over several years of work and research. In subsequent articles, other projections of the links theory will gradually be revealed, in terms of other theories such as relational algebra, graph theory, and also in terms of type theory without using set theory directly, as well as an analysis of the differences from <a href=\"https:\/\/web.archive.org\/web\/20181219134621\/http:\/\/sentences.com\/docs\/amd.pdf\" rel=\"noopener noreferrer nofollow\">Simon Williams\u2019 associative model of data<\/a> <a href=\"https:\/\/web.archive.org\/web\/20181219134621\/http:\/\/sentences.com\/docs\/amd.pdf\" rel=\"noopener noreferrer nofollow\">[3]<\/a>.<\/p>\n<p>We also plan to project the links theory to into itself, showing that it can be used as meta-theory. That will also open a door for projecting set theory and type theory into the links theory, meaning we now complete the cycle of definition (the links theory is defined in the set theory which itself can be defined in the links theory). We also be able to compare set theory, type theory, graph theory, relational algebra and links theory, that will help us to test the equivalence of these theory or at least get the precise bijective function to convert between them.<\/p>\n<p>There are also plans to present a clear and unified terminology of the links theory, its basic postulates, aspects and so on. The current progress in developing the theory can be observed in the <a href=\"https:\/\/github.com\/deep-foundation\/deep-theory\" rel=\"noopener noreferrer nofollow\">deep-theory repository<\/a>.<\/p>\n<p>To get updates, we recommend subscribing to the <a href=\"https:\/\/habr.com\/ru\/companies\/deepfoundation\" rel=\"noopener noreferrer nofollow\">Deep.Foundation blog<\/a> here or checking out our <a href=\"https:\/\/github.com\/deep-foundation\" rel=\"noopener noreferrer nofollow\">work on GitHub<\/a> now, or directly contacting us at <a href=\"https:\/\/t.me\/unilinkness\" rel=\"noopener noreferrer nofollow\">our Telegram public chat<\/a> (especially if you\u2019re afraid of getting downvoted in the comments).<\/p>\n<p>We welcome any feedback you may have, whether on Habr, GitHub, or Telegram. You can also participate in the development of the theory or help accelerate its progress by engaging with us in any way.<\/p>\n<h3>P.S.<\/h3>\n<p>This and previous articles will be updated as the links theory develops and expands over the next 6 months.<\/p>\n<h3>P.S.S.<\/h3>\n<p>If you have become a fan of the links theory, we invite you to spread this formula as a meme-virus on social media.<\/p>\n<p>Using Unicode symbols:<\/p>\n<blockquote>\n<p>L \u21a6 L\u00b2<\/p>\n<\/blockquote>\n<p>Using LaTeX:<\/p>\n<blockquote>\n<p>L \\to L^2<\/p>\n<\/blockquote>\n<p>Which is rendered as SVG (clickable):<\/p>\n<blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"formula inline\" source=\"L \\to L^2\" alt=\"L \\to L^2\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/42d\/52f\/71e\/42d52f71e0454feb23d2d4d6773ab933.svg\" width=\"66\" height=\"21\"\/><\/p>\n<\/blockquote>\n<h3>References<\/h3>\n<ol>\n<li>\n<p>Edgar F. Codd, IBM Research Laboratory, San Jose, California, June 1970, <a href=\"https:\/\/dl.acm.org\/doi\/abs\/10.1145\/362384.362685\" rel=\"noopener noreferrer nofollow\">\u201cRelational Model of Data for Large Shared Data Banks.\u201d, paragraph 1.3., page 379<\/a><\/p>\n<\/li>\n<li>\n<p>Bender, Edward A.; Williamson, S. Gill (2010). <a href=\"https:\/\/books.google.com\/books?id=vaXv_yhefG8C\" rel=\"noopener noreferrer nofollow\">\u201cLists, Decisions and Graphs. With an Introduction to Probability.\u201d, section 2, definition 6, page 161<\/a><\/p>\n<\/li>\n<li>\n<p>Simon Williams, Great Britain (1988), <a href=\"https:\/\/web.archive.org\/web\/20181219134621\/http:\/\/sentences.com\/docs\/amd.pdf\" rel=\"noopener noreferrer nofollow\">The Associative Model Of Data<\/a> <\/p>\n<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/895896\/\"> https:\/\/habr.com\/ru\/articles\/895896\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong><em>Note: The article was published at the 1st of April, but the translation is in the progress (some parts are still in Russian). I hope for your understanding. This note will be removed once it is ready. Save it to bookmarks to read later, please.<\/em><\/strong><\/p>\n<p>Last April 1st, as you might have guessed, we were joking. It\u2019s time to fix that, and now everything is  serious.<\/p>\n<h4>TL;DR (too long; didn&#8217;t read)<\/h4>\n<p>This article contains many letters, but it can be represented using just 4 symbols from <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_theory\" rel=\"noopener noreferrer nofollow\">set theory<\/a>:<\/p>\n<blockquote>\n<\/blockquote>\n<p>Everything else follows from them.<\/p>\n<h2>Overview<\/h2>\n<p>This article is primarily aimed at programmers and mathematicians, yet we\u2019ve designed it to be accessible to anyone interested in the ideas it presents. We believe that the concepts discussed here can serve as inspiration across a wide range of scientific disciplines.<\/p>\n<p>Our goal was to create a self-contained text that guides you through each topic in a clear, logical order. Throughout the article, you\u2019ll find links to <a href=\"https:\/\/www.wikipedia.org\" rel=\"noopener noreferrer nofollow\">Wikipedia<\/a> for those who wish to explore specific terms or concepts in more depth \u2014 but these are entirely optional. The text is intended to be easily understood when read from start to finish.<\/p>\n<p>Every symbol and formula is explained individually, with concise definitions provided where needed. We\u2019ve also included images to help illustrate key ideas. If you come across anything that isn\u2019t clear, please let us know so we can improve it.<\/p>\n<h2>Comparison of theories<\/h2>\n<p>To quickly dive in, we begin by comparing the mathematical foundations of the two most popular <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_model\" rel=\"noopener noreferrer nofollow\">data models<\/a> with that of the <a href=\"https:\/\/web.archive.org\/web\/20210814063207\/https:\/\/en.wikipedia.org\/wiki\/Associative_model_of_data\" rel=\"noopener noreferrer nofollow\">associative model of data<\/a>.<\/p>\n<p>In the course of our research, we discovered that traditional theories were sometimes overly complex or redundant, while at other times they imposed too many artificial constraints. <\/p>\n<p>This overall lack of flexibility, adaptability, and universality motivated us to search for a simpler yet all-encompassing informational theory and a data storage model that future artificial intelligence could easily understand and effectively utilize. Along the way, we drew inspiration from the workings of our own associative memory and associative thought processes.<\/p>\n<h3>Relational Algebra<\/h3>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_algebra\" rel=\"noopener noreferrer nofollow\">Relational algebra<\/a> and the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> are based on the concepts of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relations<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>.<\/p>\n<p>A <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relation<\/a> is defined as a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>:<\/p>\n<blockquote>\n<p> <a href=\"https:\/\/dl.acm.org\/doi\/abs\/10.1145\/362384.362685\" rel=\"noopener noreferrer nofollow\">[1]<\/a><\/p>\n<\/blockquote>\n<figure class=\"full-width\">\n<div><figcaption><strong>Figure 1.<\/strong>\u00a0A table is described by a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relation<\/a>, which is represented as a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Row_(database)\" rel=\"noopener noreferrer nofollow\">rows<\/a> , belonging to a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cartesian_product\" rel=\"noopener noreferrer nofollow\">Cartesian product<\/a> .<\/figcaption><\/div>\n<\/figure>\n<p><strong>Where:<\/strong><\/p>\n<ul>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_mathematical_symbols\" rel=\"noopener noreferrer nofollow\">symbol<\/a> denotes a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(mathematics)\" rel=\"noopener noreferrer nofollow\">relation<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">table<\/a>);<\/p>\n<\/li>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_mathematical_symbols\" rel=\"noopener noreferrer nofollow\">symbol<\/a>  indicates that the left side of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Expression_(mathematics)\" rel=\"noopener noreferrer nofollow\">expression<\/a> is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Subset\" rel=\"noopener noreferrer nofollow\">subset<\/a> of the right side;<\/p>\n<\/li>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_mathematical_symbols\" rel=\"noopener noreferrer nofollow\">symbol<\/a>  denotes the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cartesian_product\" rel=\"noopener noreferrer nofollow\">Cartesian product<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">sets<\/a>;<\/p>\n<\/li>\n<li>\n<p>The <a href=\"https:\/\/en.wikipedia.org\/wiki\/Expression_(mathematics)\" rel=\"noopener noreferrer nofollow\">expression<\/a>represents the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_domain\" rel=\"noopener noreferrer nofollow\">domain<\/a>, i.e., the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> of all possible <a href=\"https:\/\/en.wikipedia.org\/wiki\/Value_(computer_science)\" rel=\"noopener noreferrer nofollow\">values<\/a> that each <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">cell<\/a> in a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">column<\/a> can contain.<\/p>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Row_(database)\" rel=\"noopener noreferrer nofollow\">Rows<\/a>, or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Element_(mathematics)\" rel=\"noopener noreferrer nofollow\">elements<\/a> of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relation<\/a> , are represented as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>.<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_(computer_science)\" rel=\"noopener noreferrer nofollow\">Data<\/a> in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> is grouped into <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relation_(database)\" rel=\"noopener noreferrer nofollow\">relations<\/a>. By using <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> in this <a href=\"https:\/\/en.wikipedia.org\/wiki\/Database_model\" rel=\"noopener noreferrer nofollow\">model<\/a>, one can precisely represent any conceivable <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_structure\" rel=\"noopener noreferrer nofollow\">data structure<\/a>. But are <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> really necessary? For example, every <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a> can be represented as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple#Tuples_as_nested_ordered_pairs\" rel=\"noopener noreferrer nofollow\">nested ordered pairs<\/a>, which suggests that <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">ordered pairs<\/a> alone might be sufficient to represent any <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_(computer_science)\" rel=\"noopener noreferrer nofollow\">data<\/a>. Moreover, it\u2019s uncommon for <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">column<\/a> values in <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">tables<\/a> to be represented as <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> (although, for instance, a number can be decomposed into an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a> of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Bit\" rel=\"noopener noreferrer nofollow\">bits<\/a>). In some <a href=\"https:\/\/en.wikipedia.org\/wiki\/SQL\" rel=\"noopener noreferrer nofollow\">SQL<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Database\" rel=\"noopener noreferrer nofollow\">databases<\/a>, it is even forbidden to use more than  <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">columns<\/a> in a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">table<\/a> (and, by extension, in its corresponding <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a>). Thus, the actual value of  is usually lower than . Therefore, in these cases, there are no <a href=\"https:\/\/en.wikipedia.org\/wiki\/Truth\" rel=\"noopener noreferrer nofollow\">true<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a> \u2014 even in modern <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational<\/a> <a href=\"https:\/\/en.wikipedia.org\/wiki\/Database\" rel=\"noopener noreferrer nofollow\">databases<\/a>.<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>Figure 2.<\/strong> Comparison of the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> and the <a href=\"http:\/\/iacis.org\/iis\/2009\/P2009_1301.pdf\" rel=\"noopener noreferrer nofollow\">associative model of data<\/a> (the original <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_model\" rel=\"noopener noreferrer nofollow\">model<\/a> proposed by <a href=\"https:\/\/www.linkedin.com\/in\/s1m0n\" rel=\"noopener noreferrer nofollow\">Simon Williams<\/a> was simplified by us twice) <a href=\"https:\/\/web.archive.org\/web\/20181219134621\/http:\/\/sentences.com\/docs\/amd.pdf\" rel=\"noopener noreferrer nofollow\">[3]<\/a>. In other words, representing all <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_(computer_science)\" rel=\"noopener noreferrer nofollow\">data<\/a> in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Relational_model\" rel=\"noopener noreferrer nofollow\">relational model<\/a> requires a multitude of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">tables<\/a> \u2014 one for each <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_type\" rel=\"noopener noreferrer nofollow\">data type<\/a> \u2014 whereas in the<a href=\"https:\/\/web.archive.org\/web\/20210814063207\/https:\/\/en.wikipedia.org\/wiki\/Associative_model_of_data\" rel=\"noopener noreferrer nofollow\"> associative model<\/a>, it turned out that initially two <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">tables<\/a> were sufficient (<code>items<\/code> and <code>links<\/code>), and eventually just a single <a href=\"https:\/\/en.wikipedia.org\/wiki\/Table_(database)\" rel=\"noopener noreferrer nofollow\">table<\/a>  (<code>links<\/code>) of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">triplets<\/a> or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">doublets<\/a> was enough.<\/figcaption><\/div>\n<\/figure>\n<h3>Directed Graph<\/h3>\n<p>Directed graphs \u2014 and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Graph_theory\" rel=\"noopener noreferrer nofollow\">graphs<\/a> in general \u2014 are based on the concepts of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">vertices<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">2-tuples<\/a>). <\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Directed_graph\" rel=\"noopener noreferrer nofollow\">A directed graph<\/a>  is defined as follows:<\/p>\n<blockquote>\n<p> <a href=\"https:\/\/books.google.com\/books?id=vaXv_yhefG8C\" rel=\"noopener noreferrer nofollow\">[2]<\/a><\/p>\n<\/blockquote>\n<p>Where:<\/p>\n<ul>\n<li>\n<p>\u00a0&#8212; \u044d\u0442\u043e\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e<\/a>, \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u0441\u044f\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">\u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438<\/a>, \u0443\u0437\u043b\u0430\u043c\u0438 \u0438\u043b\u0438 \u0442\u043e\u0447\u043a\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u00a0is a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">set<\/a> whose elements are called <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">vertices<\/a>, nodes, or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Point_(geometry)\" rel=\"noopener noreferrer nofollow\">points<\/a>;<\/p>\n<\/li>\n<li>\n<p>\u00a0&#8212; \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440<\/a> (2-\u043a\u043e\u0440\u0442\u0435\u0436\u0435\u0439)\u00a0\u0432\u0435\u0440\u0448\u0438\u043d, \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445 \u0434\u0443\u0433\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0440\u0435\u0431\u0440\u0430\u043c\u0438 (\u0438\u043d\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0431\u0440\u0430\u043c\u0438), \u0441\u0442\u0440\u0435\u043b\u043a\u0430\u043c\u0438 \u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u043b\u0438\u043d\u0438\u044f\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u00a0is a set of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">ordered pairs<\/a> (2-<a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">tuples<\/a>) of <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">vertices<\/a>, referred to as arcs, directed <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a> (sometimes simply <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a>), arrows, or directed <a href=\"https:\/\/en.wikipedia.org\/wiki\/Line_segment\" rel=\"noopener noreferrer nofollow\">lines segments<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>In the directed graph model, data is represented by two separate <a href=\"https:\/\/en.wikipedia.org\/wiki\/Set_(mathematics)\" rel=\"noopener noreferrer nofollow\">sets<\/a>: <a href=\"https:\/\/en.wikipedia.org\/wiki\/Vertex_(graph_theory)\" rel=\"noopener noreferrer nofollow\">nodes<\/a> and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Glossary_of_graph_theory#edge\" rel=\"noopener noreferrer nofollow\">edges<\/a>. This <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_model\" rel=\"noopener noreferrer nofollow\">model<\/a> can be used to represent almost all <a href=\"https:\/\/en.wikipedia.org\/wiki\/Data_structure\" rel=\"noopener noreferrer nofollow\">data structures<\/a>, except perhaps <a href=\"https:\/\/en.wikipedia.org\/wiki\/Sequence\" rel=\"noopener noreferrer nofollow\">sequences<\/a> (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuples<\/a>). Sometimes, chains of vertices are used to represent sequences. Although this method works, it invariably leads to data duplication, and deduplication in such cases is either complicated or unfeasible. Furthermore, sequences in graphs might be represented by decomposing the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple#Tuples_as_nested_sets\" rel=\"noopener noreferrer nofollow\">sequence into nested sets<\/a>, but in our view, this is not a practical approach. It appears that we are not alone in this belief, which may explain why we have not encountered examples of others employing such methods.<\/p>\n<figure class=\"full-width\">\n<div><figcaption><strong>Figure 3.<\/strong> Comparison of the graph theory and the links theory. A vertex is equivalent to <a href=\"https:\/\/linksplatform.github.io\/itself.html\" rel=\"noopener noreferrer nofollow\">a self-referential link<\/a> \u2014 a link that begins and ends on itself. A directed edge is represented as a directed doublet-links, while an undirected edge is represented as a pair of directed doublet-links in both directions. In other words, while graph theory requires two types of entities \u2014 vertices and edges \u2014 in the links theory only links (which most closely resemble edges) are necessary.<\/figcaption><\/div>\n<\/figure>\n<h3>The links theory<\/h3>\n<p>The links theory is based on the concept of a link.<\/p>\n<p>In the projection of the links theory into set theory, <a href=\"https:\/\/habr.com\/ru\/companies\/deepfoundation\/articles\/576398\" rel=\"noopener noreferrer nofollow\">a link<\/a> is defined as an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tuple\" rel=\"noopener noreferrer nofollow\">n-tuple<\/a> of references to links, which has its own reference that other links can use to refer to it. <\/p>\n<blockquote>\n<p>It is worth noting that the separate notion of a reference is required here solely because <a href=\"https:\/\/en.wikipedia.org\/wiki\/Circular_definition\" rel=\"noopener noreferrer nofollow\">circular definitions<\/a> are not available in set theory. In fact, the links theory can describe itself without needing a distinct term for a reference \u2014 in other words, a reference is simply a special case of a link.<\/p>\n<\/blockquote>\n<h4>Duplets<\/h4>\n<p>A doublet-link is represented by a duplet (2-tuple or <a href=\"https:\/\/en.wikipedia.org\/wiki\/Ordered_pair\" rel=\"noopener noreferrer nofollow\">ordered pair<\/a>) of references to links. A doublet-link also has its own reference.<\/p>\n<pre><code class=\"python\">L = { 1 , 2 }  L \u00d7 L = {   (1, 1),   (1, 2),   (2, 1),   (2, 2), }<\/code><\/pre>\n<p><strong>Where<\/strong>: <\/p>\n<ul>\n<li>\n<p> is the set of references (from the English word \u201cLinks\u201d as in \u201cReferences\u201d).<\/p>\n<\/li>\n<\/ul>\n<p>In this example, the set  contains only  references to links, namely  and . In other words, in a network of links built on such a set of references, there can be only  links.<\/p>\n<p>To obtain all possible values of a link, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Cartesian_product\" rel=\"noopener noreferrer nofollow\">the Cartesian product<\/a> of  with itself is used, i.e.,.<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. 4. \u041c\u0430\u0442\u0440\u0438\u0446\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0430\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1, 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f. \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0432\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u0443 \u0441\u0432\u044f\u0437\u0435\u0439 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0441\u0435\u0433\u043e 4 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. 5. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0441\u0442\u0440\u043e\u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0445 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439 \u0434\u043b\u044f \u0441\u0435\u0442\u0438 \u0441 \u0434\u0432\u0443\u043c\u044f \u0441\u0432\u044f\u0437\u044f\u043c\u0438, \u044d\u0442\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f { 1, 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f.<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439-\u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<\/p>\n<blockquote>\n<\/blockquote>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p>\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Function_(mathematics)\" rel=\"noopener noreferrer nofollow\">\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u0444\u0443\u043d\u043a\u0446\u0438\u044e)<\/a>;<\/p>\n<\/li>\n<li>\n<p>  \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0441\u0435\u0442\u044c \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<blockquote>\n<\/p>\n<\/blockquote>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. 6. \u0421\u0435\u0442\u044c \u0438\u0437 \u0442\u0440\u0451\u0445 \u0441\u0432\u044f\u0437\u0435\u0439. \u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 \u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u043f\u043e\u0445\u043e\u0436\u0435\u0435 \u043d\u0430 \u0433\u0440\u0430\u0444, \u043d\u043e \u0442\u0430\u043a\u0443\u044e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043c\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0441\u0435\u0442\u044c\u044e \u0441\u0432\u044f\u0437\u0435\u0439.\u00a01-\u044f \u0438 2-\u044f \u0441\u0432\u044f\u0437\u0438 \u0438\u043c\u0435\u044e\u0442 \u043f\u043e\u0445\u043e\u0436\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. \u0422\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0431\u0435 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u0435\u0431\u0435. \u041e\u0442\u0441\u044e\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u0442\u043e\u0447\u043a\u0438 \u0432 \u0442\u0435\u043e\u0440\u0438\u0438 \u0433\u0440\u0430\u0444\u043e\u0432 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0437\u0430\u043c\u043a\u043d\u0443\u0442\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0445\u043e\u0436\u0435 \u043d\u0430 \u043d\u0435\u0447\u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u0438.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. 7. \u042d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0442\u0440\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0435\u0439.\u00a0\u0417\u0434\u0435\u0441\u044c \u043e\u0440\u0430\u043d\u0436\u0435\u0432\u044b\u043c \u0446\u0432\u0435\u0442\u043e\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u044b \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0434\u0430\u044e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439. \u0422\u043e \u0435\u0441\u0442\u044c \u0438\u0437 9 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0432\u044f\u0437\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u044b \u0432\u0441\u0435\u0433\u043e 3 \u0441\u0432\u044f\u0437\u0438, \u0447\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 L.<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439-\u0434\u0443\u043f\u043b\u0435\u0442\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0432\u044f\u0437\u0438-\u0434\u0443\u043f\u043b\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442:<\/p>\n<ul>\n<li>\n<p>\u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438;<\/p>\n<\/li>\n<li>\n<p>\u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0434\u0432\u0430 \u0434\u0443\u043f\u043b\u0435\u0442\u0430 \u0432\u043c\u0435\u0441\u0442\u0435, \u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0442\u0435\u043e\u0440\u0438\u044f \u0433\u0440\u0430\u0444\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u043b\u044e\u0431\u0443\u044e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (n-\u043a\u043e\u0440\u0442\u0435\u0436) \u0432 \u0432\u0438\u0434\u0435 \u0434\u0435\u0440\u0435\u0432\u0430, \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0433\u043e \u0438\u0437 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0445 \u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0445 \u043f\u0430\u0440;<\/p>\n<\/li>\n<li>\n<p>\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e \u043c\u043e\u0434\u0435\u043b\u0438 <a href=\"https:\/\/en.wikipedia.org\/wiki\/Predicate_(grammar)\" rel=\"noopener noreferrer nofollow\">subject-predicate<\/a>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u043c\u0443 \u0434\u0443\u043f\u043b\u0435\u0442\u044b \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c, \u043a\u0430\u043a \u043c\u044b \u0432\u0435\u0440\u0438\u043c, \u043b\u044e\u0431\u0443\u044e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<h3>\u0422\u0440\u0438\u043f\u043b\u0435\u0442\u044b<\/h3>\n<p>\u0421\u0432\u044f\u0437\u044c-\u0442\u0440\u0438\u043f\u043b\u0435\u0442 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u043c (3-\u043a\u043e\u0440\u0442\u0435\u0436\u0435\u043c) \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<pre><code class=\"python\">L = { 1 , 2 }  L \u00d7 L = {   (1, 1),   (1, 2),   (2, 1),   (2, 2), }  L \u00d7 L \u00d7 L = {   (1, 1, 1),   (1, 1, 2),   (1, 2, 1),   (1, 2, 2),   (2, 1, 1),   (2, 1, 2),   (2, 2, 1),   (2, 2, 2), }<\/code><\/pre>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. 8. \u0422\u0440\u0451\u0445\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u0443\u0431-\u043c\u0430\u0442\u0440\u0438\u0446\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043a\u0443\u0431 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1 , 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c { 1 , 2 } \u00d7 { 1 , 2 } \u00d7 { 1 , 2 }.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. 9. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441\u0432\u044f\u0437\u0438-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u043a\u0430\u0440\u0442\u043e\u0432\u043e \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 { 1 , 2 } \u043d\u0430 \u0441\u0430\u043c\u043e \u0441\u0435\u0431\u044f, \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0442\u043e \u0435\u0441\u0442\u044c { 1 , 2 } \u00d7 { 1 , 2 } \u00d7 { 1 , 2 }. \u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043d\u0430\u0447\u0430\u043b\u043e, \u0432\u0442\u043e\u0440\u0430\u044f \u043a\u0430\u043a \u0442\u0438\u043f, \u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u043a\u0430\u043a \u043a\u043e\u043d\u0435\u0446; \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0430\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043a\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b \u0432\u0435\u043a\u0442\u043e\u0440\u0430 \u0441\u0441\u044b\u043b\u043e\u043a \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0440\u0435\u0448\u0430\u0435\u043c\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439.<\/figcaption><\/div>\n<\/figure>\n<p>\u0421\u0435\u0442\u044c \u0441\u0432\u044f\u0437\u0435\u0439-\u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a:<\/p>\n<blockquote>\n<\/blockquote>\n<p>\u0413\u0434\u0435:<\/p>\n<ul>\n<li>\n<p> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0443\u044e \u0441\u0435\u0442\u044c \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p> \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u0432\u044f\u0437\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u044e\u0449\u0435\u0439 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432:<\/p>\n<blockquote>\n<\/p>\n<\/p>\n<\/blockquote>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441. 10. \u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u043e\u0432 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0432 \u0432\u0438\u0434\u0435 \u0446\u0432\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0440\u0433\u0440\u0430\u0444\u0430. \u0412 \u044d\u0442\u043e\u0439 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 4 \u0442\u0440\u0438\u043f\u043b\u0435\u0442\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u044b\u0448\u0435. \u0423\u0437\u043b\u044b<\/figcaption><\/div>\n<\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-454147","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/454147","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=454147"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/454147\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=454147"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=454147"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=454147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}