mirror of
https://github.com/Brandon-Rozek/website.git
synced 2025-08-02 07:02:01 +00:00
New post
This commit is contained in:
parent
117691fbfd
commit
64c7c6a030
3 changed files with 294 additions and 0 deletions
101
content/blog/naive-encodings-transitivity-fol.md
Normal file
101
content/blog/naive-encodings-transitivity-fol.md
Normal file
|
@ -0,0 +1,101 @@
|
|||
---
|
||||
title: "Naive Encodings of Transitivity within First-Order Logic"
|
||||
date: 2024-12-29T07:28:05-05:00
|
||||
draft: false
|
||||
tags: ["Logic"]
|
||||
math: true
|
||||
medium_enabled: false
|
||||
---
|
||||
|
||||
> The transitive closure of a binary relation cannot, in general, be expressed in first-order logic (FO)
|
||||
|
||||
In Ray Reiter's book "Knowledge in Action: Logical Foundations for Specifying and Implementing Dynamical Systems", he goes over a typical naive encoding of transitivity in first-order logic and goes over a counter-example[^1].
|
||||
|
||||
[^1]: Unfortunately there was an errata in Example 2.1.1. The set `T` should be described as `{(b, a), (b, b)}` instead of the typo `{(a, b), (b, b)}`. Thanks James for noticing this!
|
||||
|
||||
Let $G$ be a binary relation that represents whether or not there is a direct edge between two nodes.
|
||||
|
||||
We want to axiomatize the transitive closure into the binary relation $T$. This means we need to have a formula that holds when we have a transitive closure, and does not hold when we do not.
|
||||
|
||||
A naive axiomatization is the following:
|
||||
$$
|
||||
T(x, y) \iff G(x, y) \vee \exists z(G(x, z) \wedge T(z, y))
|
||||
$$
|
||||
Ray's counter-example is the following. Consider the following valuation of $G$:
|
||||
|
||||
```
|
||||
G: {(b, b)}
|
||||
```
|
||||
|
||||
{{< unsafe >}}
|
||||
|
||||
<img height="300px" src="/files/images/blog/202412280944.svg"/>
|
||||
|
||||
<br/>
|
||||
|
||||
{{< /unsafe >}}
|
||||
|
||||
Now consider the following valuation of $T$:
|
||||
|
||||
```
|
||||
T: {(b, a), (b, b)}
|
||||
```
|
||||
|
||||
We falsely state that `b` is connected to `a` via transitive closure. If our axiomatization is sound, then it should be falsified.
|
||||
$$
|
||||
\begin{align*}
|
||||
T(b, a) &\iff G(b, a) \vee \exists z (G(b, z) \wedge T(z, a)) \\\\
|
||||
&\impliedby \bot \vee (G(b, b) \wedge T(b, a)) \\\\
|
||||
&\impliedby \bot \vee (\top \wedge \top) \\\\
|
||||
&\impliedby \top
|
||||
\end{align*}
|
||||
$$
|
||||
However, the formula is satisfied! Therefore, this cannot be used to axiomatize transitive closure.
|
||||
|
||||
That's the end of the original counter-example in the book. However, I thought it would be fun to extend the exercise.
|
||||
|
||||
The issue in the last example, is that we had a cycle in which we were able to define $T(b, a)$ in terms of $T(b, a)$. What if we add a constraint so that isn't the case?
|
||||
$$
|
||||
T(x, y) \iff G(x, y) \vee \exists z(z \ne x \wedge G(x, z) \wedge T(z, y))
|
||||
$$
|
||||
Does this new formula axiomatize transitive closure? The quote at the beginning begs to differ, so let's find a counter-example!
|
||||
|
||||
Consider the following valuations for $G$ and $T$:
|
||||
|
||||
```
|
||||
G: {(b, a), (a, b)}
|
||||
T: {(b, c), (a, c)}
|
||||
```
|
||||
|
||||
{{< unsafe >}}
|
||||
|
||||
<img height="300px" src="/files/images/blog/202412281036.svg"/>
|
||||
|
||||
<br/>
|
||||
|
||||
{{< /unsafe >}}
|
||||
|
||||
As before, this model should not have transitive closure. Let's evaluate our modified formula.
|
||||
$$
|
||||
\begin{align*}
|
||||
T(b, c) &\iff G(b, c) \vee \exists z (z \ne b \wedge G(b, z) \wedge T(z,c)) \\\\
|
||||
&\impliedby \bot \vee (a \ne b \wedge G(b, a) \wedge T(a, c)) \\\\
|
||||
&\impliedby \bot \vee (\top \wedge \top \wedge \top) \\\\
|
||||
&\impliedby \top
|
||||
\end{align*}
|
||||
$$
|
||||
|
||||
$$
|
||||
\begin{align*}
|
||||
T(a, c) &\iff G(a, c) \vee \exists z (G(a, z) \wedge T(z, c)) \\\\
|
||||
&\impliedby G(a, c) \vee (b \ne a \wedge G(a, b) \wedge T(b, c)) \\\\
|
||||
&\impliedby \bot \vee (\top \wedge \top \wedge \top) \\\\
|
||||
&\impliedby \top
|
||||
\end{align*}
|
||||
$$
|
||||
|
||||
Here we can see that the above valuations depending on each other.
|
||||
|
||||
Wikipedia has a great [article](https://en.wikipedia.org/wiki/Transitive_closure) on transitive closure including a section on its use within logic and computational complexity.
|
||||
|
||||
> (First-order Transitive-Closure Logic) FO(TC) is strictly more expressive than FO.
|
96
static/files/images/blog/202412280944.svg
Normal file
96
static/files/images/blog/202412280944.svg
Normal file
|
@ -0,0 +1,96 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.8" preserveAspectRatio="xMinYMin meet" viewBox="0 0 455 279"><svg id="d2-svg" class="d2-329753367" width="455" height="279" viewBox="-101 -101 455 279"><rect x="-101.000000" y="-101.000000" width="455.000000" height="279.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
|
||||
.d2-329753367 .text-bold {
|
||||
font-family: "d2-329753367-font-bold";
|
||||
}
|
||||
@font-face {
|
||||
font-family: d2-329753367-font-bold;
|
||||
src: url("data:application/font-woff;base64,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");
|
||||
}]]></style><style type="text/css"><![CDATA[.shape {
|
||||
shape-rendering: geometricPrecision;
|
||||
stroke-linejoin: round;
|
||||
}
|
||||
.connection {
|
||||
stroke-linecap: round;
|
||||
stroke-linejoin: round;
|
||||
}
|
||||
.blend {
|
||||
mix-blend-mode: multiply;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.d2-329753367 .fill-N1{fill:#0A0F25;}
|
||||
.d2-329753367 .fill-N2{fill:#676C7E;}
|
||||
.d2-329753367 .fill-N3{fill:#9499AB;}
|
||||
.d2-329753367 .fill-N4{fill:#CFD2DD;}
|
||||
.d2-329753367 .fill-N5{fill:#DEE1EB;}
|
||||
.d2-329753367 .fill-N6{fill:#EEF1F8;}
|
||||
.d2-329753367 .fill-N7{fill:#FFFFFF;}
|
||||
.d2-329753367 .fill-B1{fill:#0D32B2;}
|
||||
.d2-329753367 .fill-B2{fill:#0D32B2;}
|
||||
.d2-329753367 .fill-B3{fill:#E3E9FD;}
|
||||
.d2-329753367 .fill-B4{fill:#E3E9FD;}
|
||||
.d2-329753367 .fill-B5{fill:#EDF0FD;}
|
||||
.d2-329753367 .fill-B6{fill:#F7F8FE;}
|
||||
.d2-329753367 .fill-AA2{fill:#4A6FF3;}
|
||||
.d2-329753367 .fill-AA4{fill:#EDF0FD;}
|
||||
.d2-329753367 .fill-AA5{fill:#F7F8FE;}
|
||||
.d2-329753367 .fill-AB4{fill:#EDF0FD;}
|
||||
.d2-329753367 .fill-AB5{fill:#F7F8FE;}
|
||||
.d2-329753367 .stroke-N1{stroke:#0A0F25;}
|
||||
.d2-329753367 .stroke-N2{stroke:#676C7E;}
|
||||
.d2-329753367 .stroke-N3{stroke:#9499AB;}
|
||||
.d2-329753367 .stroke-N4{stroke:#CFD2DD;}
|
||||
.d2-329753367 .stroke-N5{stroke:#DEE1EB;}
|
||||
.d2-329753367 .stroke-N6{stroke:#EEF1F8;}
|
||||
.d2-329753367 .stroke-N7{stroke:#FFFFFF;}
|
||||
.d2-329753367 .stroke-B1{stroke:#0D32B2;}
|
||||
.d2-329753367 .stroke-B2{stroke:#0D32B2;}
|
||||
.d2-329753367 .stroke-B3{stroke:#E3E9FD;}
|
||||
.d2-329753367 .stroke-B4{stroke:#E3E9FD;}
|
||||
.d2-329753367 .stroke-B5{stroke:#EDF0FD;}
|
||||
.d2-329753367 .stroke-B6{stroke:#F7F8FE;}
|
||||
.d2-329753367 .stroke-AA2{stroke:#4A6FF3;}
|
||||
.d2-329753367 .stroke-AA4{stroke:#EDF0FD;}
|
||||
.d2-329753367 .stroke-AA5{stroke:#F7F8FE;}
|
||||
.d2-329753367 .stroke-AB4{stroke:#EDF0FD;}
|
||||
.d2-329753367 .stroke-AB5{stroke:#F7F8FE;}
|
||||
.d2-329753367 .background-color-N1{background-color:#0A0F25;}
|
||||
.d2-329753367 .background-color-N2{background-color:#676C7E;}
|
||||
.d2-329753367 .background-color-N3{background-color:#9499AB;}
|
||||
.d2-329753367 .background-color-N4{background-color:#CFD2DD;}
|
||||
.d2-329753367 .background-color-N5{background-color:#DEE1EB;}
|
||||
.d2-329753367 .background-color-N6{background-color:#EEF1F8;}
|
||||
.d2-329753367 .background-color-N7{background-color:#FFFFFF;}
|
||||
.d2-329753367 .background-color-B1{background-color:#0D32B2;}
|
||||
.d2-329753367 .background-color-B2{background-color:#0D32B2;}
|
||||
.d2-329753367 .background-color-B3{background-color:#E3E9FD;}
|
||||
.d2-329753367 .background-color-B4{background-color:#E3E9FD;}
|
||||
.d2-329753367 .background-color-B5{background-color:#EDF0FD;}
|
||||
.d2-329753367 .background-color-B6{background-color:#F7F8FE;}
|
||||
.d2-329753367 .background-color-AA2{background-color:#4A6FF3;}
|
||||
.d2-329753367 .background-color-AA4{background-color:#EDF0FD;}
|
||||
.d2-329753367 .background-color-AA5{background-color:#F7F8FE;}
|
||||
.d2-329753367 .background-color-AB4{background-color:#EDF0FD;}
|
||||
.d2-329753367 .background-color-AB5{background-color:#F7F8FE;}
|
||||
.d2-329753367 .color-N1{color:#0A0F25;}
|
||||
.d2-329753367 .color-N2{color:#676C7E;}
|
||||
.d2-329753367 .color-N3{color:#9499AB;}
|
||||
.d2-329753367 .color-N4{color:#CFD2DD;}
|
||||
.d2-329753367 .color-N5{color:#DEE1EB;}
|
||||
.d2-329753367 .color-N6{color:#EEF1F8;}
|
||||
.d2-329753367 .color-N7{color:#FFFFFF;}
|
||||
.d2-329753367 .color-B1{color:#0D32B2;}
|
||||
.d2-329753367 .color-B2{color:#0D32B2;}
|
||||
.d2-329753367 .color-B3{color:#E3E9FD;}
|
||||
.d2-329753367 .color-B4{color:#E3E9FD;}
|
||||
.d2-329753367 .color-B5{color:#EDF0FD;}
|
||||
.d2-329753367 .color-B6{color:#F7F8FE;}
|
||||
.d2-329753367 .color-AA2{color:#4A6FF3;}
|
||||
.d2-329753367 .color-AA4{color:#EDF0FD;}
|
||||
.d2-329753367 .color-AA5{color:#F7F8FE;}
|
||||
.d2-329753367 .color-AB4{color:#EDF0FD;}
|
||||
.d2-329753367 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="A"><g class="shape" ><ellipse rx="38.500000" ry="38.500000" cx="38.500000" cy="38.500000" stroke="#0D32B2" fill="#F7F8FE" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="38.500000" y="44.000000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">A</text></g><g id="B"><g class="shape" ><ellipse rx="38.500000" ry="38.500000" cx="175.500000" cy="38.500000" stroke="#0D32B2" fill="#F7F8FE" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="175.500000" y="44.000000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">B</text></g><g id="(B -> B)[0]"><marker id="mk-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 210.714950 17.970949 C 234.332993 3.799000 242.000000 0.000000 244.000000 0.000000 C 246.000000 0.000000 248.666000 7.700000 250.666000 19.250000 C 252.666000 30.799999 252.666000 46.200001 250.666000 57.750000 C 248.666000 69.300003 234.332993 73.199997 212.429960 60.058003" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-329753367)" /></g><mask id="d2-329753367" maskUnits="userSpaceOnUse" x="-101" y="-101" width="455" height="279">
|
||||
<rect x="-101" y="-101" width="455" height="279" fill="white"></rect>
|
||||
<rect x="33.000000" y="28.000000" width="11" height="21" fill="rgba(0,0,0,0.75)"></rect>
|
||||
<rect x="171.000000" y="28.000000" width="9" height="21" fill="rgba(0,0,0,0.75)"></rect>
|
||||
</mask></svg></svg>
|
After Width: | Height: | Size: 9.7 KiB |
97
static/files/images/blog/202412281036.svg
Normal file
97
static/files/images/blog/202412281036.svg
Normal file
|
@ -0,0 +1,97 @@
|
|||
<?xml version="1.0" encoding="utf-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" d2Version="v0.6.8" preserveAspectRatio="xMinYMin meet" viewBox="0 0 416 456"><svg id="d2-svg" class="d2-1191660745" width="416" height="456" viewBox="-101 -101 416 456"><rect x="-101.000000" y="-101.000000" width="416.000000" height="456.000000" rx="0.000000" fill="#FFFFFF" class=" fill-N7" stroke-width="0" /><style type="text/css"><![CDATA[
|
||||
.d2-1191660745 .text-bold {
|
||||
font-family: "d2-1191660745-font-bold";
|
||||
}
|
||||
@font-face {
|
||||
font-family: d2-1191660745-font-bold;
|
||||
src: url("data:application/font-woff;base64,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");
|
||||
}]]></style><style type="text/css"><![CDATA[.shape {
|
||||
shape-rendering: geometricPrecision;
|
||||
stroke-linejoin: round;
|
||||
}
|
||||
.connection {
|
||||
stroke-linecap: round;
|
||||
stroke-linejoin: round;
|
||||
}
|
||||
.blend {
|
||||
mix-blend-mode: multiply;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.d2-1191660745 .fill-N1{fill:#0A0F25;}
|
||||
.d2-1191660745 .fill-N2{fill:#676C7E;}
|
||||
.d2-1191660745 .fill-N3{fill:#9499AB;}
|
||||
.d2-1191660745 .fill-N4{fill:#CFD2DD;}
|
||||
.d2-1191660745 .fill-N5{fill:#DEE1EB;}
|
||||
.d2-1191660745 .fill-N6{fill:#EEF1F8;}
|
||||
.d2-1191660745 .fill-N7{fill:#FFFFFF;}
|
||||
.d2-1191660745 .fill-B1{fill:#0D32B2;}
|
||||
.d2-1191660745 .fill-B2{fill:#0D32B2;}
|
||||
.d2-1191660745 .fill-B3{fill:#E3E9FD;}
|
||||
.d2-1191660745 .fill-B4{fill:#E3E9FD;}
|
||||
.d2-1191660745 .fill-B5{fill:#EDF0FD;}
|
||||
.d2-1191660745 .fill-B6{fill:#F7F8FE;}
|
||||
.d2-1191660745 .fill-AA2{fill:#4A6FF3;}
|
||||
.d2-1191660745 .fill-AA4{fill:#EDF0FD;}
|
||||
.d2-1191660745 .fill-AA5{fill:#F7F8FE;}
|
||||
.d2-1191660745 .fill-AB4{fill:#EDF0FD;}
|
||||
.d2-1191660745 .fill-AB5{fill:#F7F8FE;}
|
||||
.d2-1191660745 .stroke-N1{stroke:#0A0F25;}
|
||||
.d2-1191660745 .stroke-N2{stroke:#676C7E;}
|
||||
.d2-1191660745 .stroke-N3{stroke:#9499AB;}
|
||||
.d2-1191660745 .stroke-N4{stroke:#CFD2DD;}
|
||||
.d2-1191660745 .stroke-N5{stroke:#DEE1EB;}
|
||||
.d2-1191660745 .stroke-N6{stroke:#EEF1F8;}
|
||||
.d2-1191660745 .stroke-N7{stroke:#FFFFFF;}
|
||||
.d2-1191660745 .stroke-B1{stroke:#0D32B2;}
|
||||
.d2-1191660745 .stroke-B2{stroke:#0D32B2;}
|
||||
.d2-1191660745 .stroke-B3{stroke:#E3E9FD;}
|
||||
.d2-1191660745 .stroke-B4{stroke:#E3E9FD;}
|
||||
.d2-1191660745 .stroke-B5{stroke:#EDF0FD;}
|
||||
.d2-1191660745 .stroke-B6{stroke:#F7F8FE;}
|
||||
.d2-1191660745 .stroke-AA2{stroke:#4A6FF3;}
|
||||
.d2-1191660745 .stroke-AA4{stroke:#EDF0FD;}
|
||||
.d2-1191660745 .stroke-AA5{stroke:#F7F8FE;}
|
||||
.d2-1191660745 .stroke-AB4{stroke:#EDF0FD;}
|
||||
.d2-1191660745 .stroke-AB5{stroke:#F7F8FE;}
|
||||
.d2-1191660745 .background-color-N1{background-color:#0A0F25;}
|
||||
.d2-1191660745 .background-color-N2{background-color:#676C7E;}
|
||||
.d2-1191660745 .background-color-N3{background-color:#9499AB;}
|
||||
.d2-1191660745 .background-color-N4{background-color:#CFD2DD;}
|
||||
.d2-1191660745 .background-color-N5{background-color:#DEE1EB;}
|
||||
.d2-1191660745 .background-color-N6{background-color:#EEF1F8;}
|
||||
.d2-1191660745 .background-color-N7{background-color:#FFFFFF;}
|
||||
.d2-1191660745 .background-color-B1{background-color:#0D32B2;}
|
||||
.d2-1191660745 .background-color-B2{background-color:#0D32B2;}
|
||||
.d2-1191660745 .background-color-B3{background-color:#E3E9FD;}
|
||||
.d2-1191660745 .background-color-B4{background-color:#E3E9FD;}
|
||||
.d2-1191660745 .background-color-B5{background-color:#EDF0FD;}
|
||||
.d2-1191660745 .background-color-B6{background-color:#F7F8FE;}
|
||||
.d2-1191660745 .background-color-AA2{background-color:#4A6FF3;}
|
||||
.d2-1191660745 .background-color-AA4{background-color:#EDF0FD;}
|
||||
.d2-1191660745 .background-color-AA5{background-color:#F7F8FE;}
|
||||
.d2-1191660745 .background-color-AB4{background-color:#EDF0FD;}
|
||||
.d2-1191660745 .background-color-AB5{background-color:#F7F8FE;}
|
||||
.d2-1191660745 .color-N1{color:#0A0F25;}
|
||||
.d2-1191660745 .color-N2{color:#676C7E;}
|
||||
.d2-1191660745 .color-N3{color:#9499AB;}
|
||||
.d2-1191660745 .color-N4{color:#CFD2DD;}
|
||||
.d2-1191660745 .color-N5{color:#DEE1EB;}
|
||||
.d2-1191660745 .color-N6{color:#EEF1F8;}
|
||||
.d2-1191660745 .color-N7{color:#FFFFFF;}
|
||||
.d2-1191660745 .color-B1{color:#0D32B2;}
|
||||
.d2-1191660745 .color-B2{color:#0D32B2;}
|
||||
.d2-1191660745 .color-B3{color:#E3E9FD;}
|
||||
.d2-1191660745 .color-B4{color:#E3E9FD;}
|
||||
.d2-1191660745 .color-B5{color:#EDF0FD;}
|
||||
.d2-1191660745 .color-B6{color:#F7F8FE;}
|
||||
.d2-1191660745 .color-AA2{color:#4A6FF3;}
|
||||
.d2-1191660745 .color-AA4{color:#EDF0FD;}
|
||||
.d2-1191660745 .color-AA5{color:#F7F8FE;}
|
||||
.d2-1191660745 .color-AB4{color:#EDF0FD;}
|
||||
.d2-1191660745 .color-AB5{color:#F7F8FE;}.appendix text.text{fill:#0A0F25}.md{--color-fg-default:#0A0F25;--color-fg-muted:#676C7E;--color-fg-subtle:#9499AB;--color-canvas-default:#FFFFFF;--color-canvas-subtle:#EEF1F8;--color-border-default:#0D32B2;--color-border-muted:#0D32B2;--color-neutral-muted:#EEF1F8;--color-accent-fg:#0D32B2;--color-accent-emphasis:#0D32B2;--color-attention-subtle:#676C7E;--color-danger-fg:red;}.sketch-overlay-B1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B2{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-B3{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-B6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-AA4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AA5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB4{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-AB5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N1{fill:url(#streaks-darker);mix-blend-mode:lighten}.sketch-overlay-N2{fill:url(#streaks-dark);mix-blend-mode:overlay}.sketch-overlay-N3{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N4{fill:url(#streaks-normal);mix-blend-mode:color-burn}.sketch-overlay-N5{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N6{fill:url(#streaks-bright);mix-blend-mode:darken}.sketch-overlay-N7{fill:url(#streaks-bright);mix-blend-mode:darken}.light-code{display: block}.dark-code{display: none}]]></style><g id="A"><g class="shape" ><ellipse rx="38.500000" ry="38.500000" cx="38.500000" cy="38.500000" stroke="#0D32B2" fill="#F7F8FE" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="38.500000" y="44.000000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">A</text></g><g id="B"><g class="shape" ><ellipse rx="38.500000" ry="38.500000" cx="38.500000" cy="215.500000" stroke="#0D32B2" fill="#F7F8FE" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="38.500000" y="221.000000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">B</text></g><g id="C"><g class="shape" ><ellipse rx="38.500000" ry="38.500000" cx="175.500000" cy="38.500000" stroke="#0D32B2" fill="#F7F8FE" class="shape stroke-B1 fill-B6" style="stroke-width:2;" /></g><text x="175.500000" y="44.000000" fill="#0A0F25" class="text-bold fill-N1" style="text-anchor:middle;font-size:16px">C</text></g><g id="(A -> B)[0]"><marker id="mk-3488378134" markerWidth="10.000000" markerHeight="12.000000" refX="7.000000" refY="6.000000" viewBox="0.000000 0.000000 10.000000 12.000000" orient="auto" markerUnits="userSpaceOnUse"> <polygon points="0.000000,0.000000 10.000000,6.000000 0.000000,12.000000" fill="#0D32B2" class="connection fill-B1" stroke-width="2" /> </marker><path d="M 34.742170 78.983311 C 29.799999 117.000000 29.799999 137.000000 34.484339 173.033378" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1191660745)" /></g><g id="(B -> A)[0]"><path d="M 42.257830 175.016689 C 47.200001 137.000000 47.200001 117.000000 42.515661 80.966622" stroke="#0D32B2" fill="none" class="connection stroke-B1" style="stroke-width:2;" marker-end="url(#mk-3488378134)" mask="url(#d2-1191660745)" /></g><mask id="d2-1191660745" maskUnits="userSpaceOnUse" x="-101" y="-101" width="416" height="456">
|
||||
<rect x="-101" y="-101" width="416" height="456" fill="white"></rect>
|
||||
<rect x="33.000000" y="28.000000" width="11" height="21" fill="rgba(0,0,0,0.75)"></rect>
|
||||
<rect x="34.000000" y="205.000000" width="9" height="21" fill="rgba(0,0,0,0.75)"></rect>
|
||||
<rect x="171.000000" y="28.000000" width="9" height="21" fill="rgba(0,0,0,0.75)"></rect>
|
||||
</mask></svg></svg>
|
After Width: | Height: | Size: 10 KiB |
Loading…
Add table
Reference in a new issue