Search

# Old - Compositional dependencies with duoidals

Last updated Aug 7, 2023

The operations of a posetal duoidal structure can be interpreted as talking about dependencies. Let $(⊗,I)$ and $(◁,N)$ form a duoidal structure. We read

• $X ⊗ Y$ as “$X$ and $Y$ happen independently, without communication”;
• $X ◁ Y$ as “$X$ happens before $Y$, communicating with it”;
• $I$ as “interrupted communication”; and
• $N$ as “no-op, doing nothing”;
• $X → Y$ as “protocol $X$ is a subset of protocol $Y$” or “$X$ is simpler than $Y$”.

In this interpretation, the rules of a duoidal category say that

1. The protocol that disallows intermediate communication is simpler than the protocol that allows intermediate communication, $(X ◁ Y) ⊗ (Z ◁ W) → (X ⊗ Z) ◁ (Y ⊗ W)$.
2. The protocol that interrupts communication once is simpler than the one that interrupts twice, $I → I ◁ I$.
3. The protocol that has uses two parallel channels to do nothing is simpler than the one that must use just one, $N ⊗ N → N$.
4. Interrupting communication is simpler than doing nothing, $I → N$.

Proposition. The endomorphisms of an adjoint monoid form a duoidal structure with composition and convolution.

### # Tikz Diagrams

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184  \begin{document} \tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt \begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1] %uncomment if require: \path (0,172); %set diagram left start at 0, and has height of 172 %Curve Lines [id:da8202806276613672] \draw (130,75) .. controls (144.88,75.03) and (144.88,74.91) .. (145,70) ; %Curve Lines [id:da6348956807097036] \draw (129.6,15) .. controls (144.48,14.97) and (144.48,15.09) .. (144.6,20) ; %Curve Lines [id:da1786770102846127] \draw (45,15) .. controls (59.88,14.94) and (59.88,15.19) .. (60,25) ; %Curve Lines [id:da7178665934082309] \draw (45,75) .. controls (59.88,75.06) and (59.88,74.81) .. (60,65) ; %Curve Lines [id:da1912803521531138] \draw (130,50) .. controls (144.88,49.97) and (144.88,50.09) .. (145,55) ; %Curve Lines [id:da873824627433169] \draw (130,40) .. controls (144.88,40.03) and (144.88,39.91) .. (145,35) ; %Straight Lines [id:da5315103019784442] \draw (45,5) -- (45,15) ; %Curve Lines [id:da3945944674388153] \draw (45,15) .. controls (30.13,14.94) and (30.13,15.19) .. (30,25) ; %Shape: Rectangle [id:dp17434044867390075] \draw (20,25.5) -- (40,25.5) -- (40,40.5) -- (20,40.5) -- cycle ; %Shape: Rectangle [id:dp3387023065944216] \draw (50,25) -- (70,25) -- (70,40) -- (50,40) -- cycle ; %Straight Lines [id:da8513813810468402] \draw (30,40) -- (30,50) ; %Straight Lines [id:da3765635474161475] \draw (60,40) -- (60,50) ; %Straight Lines [id:da1241687471697479] \draw [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (80,45) -- (93,45) ; \draw [shift={(95,45)}, rotate = 180] [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ][line width=0.75] (4.37,-1.32) .. controls (2.78,-0.56) and (1.32,-0.12) .. (0,0) .. controls (1.32,0.12) and (2.78,0.56) .. (4.37,1.32) ; %Flowchart: Connector [id:dp7726497094282242] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (43,15) .. controls (43,13.9) and (43.9,13) .. (45,13) .. controls (46.1,13) and (47,13.9) .. (47,15) .. controls (47,16.1) and (46.1,17) .. (45,17) .. controls (43.9,17) and (43,16.1) .. (43,15) -- cycle ; %Shape: Rectangle [id:dp6581968416626262] \draw (20,50) -- (40,50) -- (40,65) -- (20,65) -- cycle ; %Shape: Rectangle [id:dp42067734232932885] \draw (50,50) -- (70,50) -- (70,65) -- (50,65) -- cycle ; %Straight Lines [id:da4842321080018003] \draw (45,85) -- (45,75) ; %Curve Lines [id:da7450215593123712] \draw (45,75) .. controls (30.13,75.06) and (30.13,74.81) .. (30,65) ; %Flowchart: Connector [id:dp4378952324352795] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (43,75) .. controls (43,76.1) and (43.9,77) .. (45,77) .. controls (46.1,77) and (47,76.1) .. (47,75) .. controls (47,73.9) and (46.1,73) .. (45,73) .. controls (43.9,73) and (43,73.9) .. (43,75) -- cycle ; %Straight Lines [id:da0010280066920675957] \draw (130,5) -- (130,15) ; %Shape: Rectangle [id:dp10271024949416763] \draw (105,20) -- (125,20) -- (125,35) -- (105,35) -- cycle ; %Shape: Rectangle [id:dp6533340504046847] \draw (135,20) -- (155,20) -- (155,35) -- (135,35) -- cycle ; %Shape: Rectangle [id:dp5840129863089883] \draw (105,55) -- (125,55) -- (125,70) -- (105,70) -- cycle ; %Shape: Rectangle [id:dp6707945694918196] \draw (135,55) -- (155,55) -- (155,70) -- (135,70) -- cycle ; %Straight Lines [id:da15788539140458624] \draw (130,85) -- (130,75) ; %Curve Lines [id:da26111174079055] \draw (130,75) .. controls (115.13,75.03) and (115.13,74.91) .. (115,70) ; %Flowchart: Connector [id:dp8708391825910126] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (128,75) .. controls (128,76.11) and (128.9,77) .. (130,77) .. controls (131.1,77) and (132,76.11) .. (132,75) .. controls (132,73.9) and (131.1,73) .. (130,73) .. controls (128.9,73) and (128,73.9) .. (128,75) -- cycle ; %Straight Lines [id:da7982622388249823] \draw (130,45) -- (130,50) ; %Curve Lines [id:da8453943735093221] \draw (130,50) .. controls (115.13,49.97) and (115.13,50.09) .. (115,55) ; %Flowchart: Connector [id:dp04538686109025736] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (128,50) .. controls (128,48.9) and (128.9,48) .. (130,48) .. controls (131.1,48) and (132,48.9) .. (132,50) .. controls (132,51.1) and (131.1,52) .. (130,52) .. controls (128.9,52) and (128,51.1) .. (128,50) -- cycle ; %Straight Lines [id:da21795893777235098] \draw (130,45) -- (130,40) ; %Curve Lines [id:da6340800435250905] \draw (130,40) .. controls (115.13,40.03) and (115.13,39.91) .. (115,35) ; %Flowchart: Connector [id:dp3235438039258569] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (128,40) .. controls (128,41.1) and (128.9,42) .. (130,42) .. controls (131.1,42) and (132,41.1) .. (132,40) .. controls (132,38.9) and (131.1,38) .. (130,38) .. controls (128.9,38) and (128,38.9) .. (128,40) -- cycle ; %Curve Lines [id:da5497124043386197] \draw (130,15) .. controls (115.13,14.97) and (115.13,15.09) .. (115,20) ; %Flowchart: Connector [id:dp35804033358041953] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (128,15) .. controls (128,13.9) and (128.9,13) .. (130,13) .. controls (131.1,13) and (132,13.9) .. (132,15) .. controls (132,16.1) and (131.1,17) .. (130,17) .. controls (128.9,17) and (128,16.1) .. (128,15) -- cycle ; %Straight Lines [id:da35129982076840127] \draw (85,90) -- (85,105) ; %Straight Lines [id:da403180881200601] \draw [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (105,115) -- (118,115) ; \draw [shift={(120,115)}, rotate = 180] [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ][line width=0.75] (4.37,-1.32) .. controls (2.78,-0.56) and (1.32,-0.12) .. (0,0) .. controls (1.32,0.12) and (2.78,0.56) .. (4.37,1.32) ; %Straight Lines [id:da57843282035732] \draw (85,140) -- (85,125) ; %Straight Lines [id:da7947141385840568] \draw (130,140) -- (130,90) ; %Curve Lines [id:da1430093786215022] \draw (85,105) .. controls (74.44,105) and (75.22,105) .. (75,115) ; %Curve Lines [id:da7362133174773545] \draw (85,125) .. controls (74.44,125) and (75.22,125) .. (75,115) ; %Curve Lines [id:da007379601080850451] \draw (85,105) .. controls (95.56,105) and (94.78,105) .. (95,115) ; %Curve Lines [id:da3459195963042163] \draw (85,125) .. controls (95.56,125) and (94.78,125) .. (95,115) ; %Flowchart: Connector [id:dp7633956924565998] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (83,105) .. controls (83,103.9) and (83.9,103) .. (85,103) .. controls (86.1,103) and (87,103.9) .. (87,105) .. controls (87,106.1) and (86.1,107) .. (85,107) .. controls (83.9,107) and (83,106.1) .. (83,105) -- cycle ; %Flowchart: Connector [id:dp30046697347711304] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (83,125) .. controls (83,123.9) and (83.9,123) .. (85,123) .. controls (86.1,123) and (87,123.9) .. (87,125) .. controls (87,126.1) and (86.1,127) .. (85,127) .. controls (83.9,127) and (83,126.1) .. (83,125) -- cycle ; %Straight Lines [id:da6664436212754452] \draw (10,90) -- (10,105) ; %Straight Lines [id:da5121470100304261] \draw [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (20,115) -- (33,115) ; \draw [shift={(35,115)}, rotate = 180] [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ][line width=0.75] (4.37,-1.32) .. controls (2.78,-0.56) and (1.32,-0.12) .. (0,0) .. controls (1.32,0.12) and (2.78,0.56) .. (4.37,1.32) ; %Flowchart: Connector [id:dp6283022233226582] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (8,105) .. controls (8,103.9) and (8.9,103) .. (10,103) .. controls (11.1,103) and (12,103.9) .. (12,105) .. controls (12,106.1) and (11.1,107) .. (10,107) .. controls (8.9,107) and (8,106.1) .. (8,105) -- cycle ; %Straight Lines [id:da6121324542586701] \draw (10,140) -- (10,125) ; %Flowchart: Connector [id:dp047670188977648076] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (8,125) .. controls (8,126.1) and (8.9,127) .. (10,127) .. controls (11.1,127) and (12,126.1) .. (12,125) .. controls (12,123.9) and (11.1,123) .. (10,123) .. controls (8.9,123) and (8,123.9) .. (8,125) -- cycle ; %Straight Lines [id:da2614302553271338] \draw (45,140) -- (45,90) ; %Straight Lines [id:da9288620027506493] \draw (160,90) -- (160,105) ; %Straight Lines [id:da39499189705752613] \draw [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ] (170,115) -- (183,115) ; \draw [shift={(185,115)}, rotate = 180] [color={rgb, 255:red, 208; green, 2; blue, 27 } ,draw opacity=1 ][line width=0.75] (4.37,-1.32) .. controls (2.78,-0.56) and (1.32,-0.12) .. (0,0) .. controls (1.32,0.12) and (2.78,0.56) .. (4.37,1.32) ; %Flowchart: Connector [id:dp49257024266162075] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (158,105) .. controls (158,103.9) and (158.9,103) .. (160,103) .. controls (161.1,103) and (162,103.9) .. (162,105) .. controls (162,106.1) and (161.1,107) .. (160,107) .. controls (158.9,107) and (158,106.1) .. (158,105) -- cycle ; %Straight Lines [id:da9062140566650062] \draw (160,140) -- (160,125) ; %Flowchart: Connector [id:dp8539952320835718] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (158,123) .. controls (158,124.1) and (158.9,125) .. (160,125) .. controls (161.1,125) and (162,124.1) .. (162,123) .. controls (162,121.9) and (161.1,121) .. (160,121) .. controls (158.9,121) and (158,121.9) .. (158,123) -- cycle ; %Straight Lines [id:da45624411117097896] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (195,90) -- (195,100) ; %Straight Lines [id:da35596174180632834] \draw (195,140) -- (195,130) ; %Flowchart: Connector [id:dp8839544742211389] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (193,130) .. controls (193,131.1) and (193.9,132) .. (195,132) .. controls (196.1,132) and (197,131.1) .. (197,130) .. controls (197,128.9) and (196.1,128) .. (195,128) .. controls (193.9,128) and (193,128.9) .. (193,130) -- cycle ; %Straight Lines [id:da020451497700270327] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (195,110) -- (195,115) ; %Flowchart: Connector [id:dp6985072796418649] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (193,110) .. controls (193,108.9) and (193.9,108) .. (195,108) .. controls (196.1,108) and (197,108.9) .. (197,110) .. controls (197,111.1) and (196.1,112) .. (195,112) .. controls (193.9,112) and (193,111.1) .. (193,110) -- cycle ; %Straight Lines [id:da5185261240870787] \draw (195,120) -- (195,115) ; %Flowchart: Connector [id:dp06864145287738799] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (193,120) .. controls (193,121.1) and (193.9,122) .. (195,122) .. controls (196.1,122) and (197,121.1) .. (197,120) .. controls (197,118.9) and (196.1,118) .. (195,118) .. controls (193.9,118) and (193,118.9) .. (193,120) -- cycle ; %Flowchart: Connector [id:dp12328103587681671] \draw [fill={rgb, 255:red, 255; green, 255; blue, 255 } ,fill opacity=1 ] (193,100) .. controls (193,98.9) and (193.9,98) .. (195,98) .. controls (196.1,98) and (197,98.9) .. (197,100) .. controls (197,101.1) and (196.1,102) .. (195,102) .. controls (193.9,102) and (193,101.1) .. (193,100) -- cycle ; %Shape: Rectangle [id:dp010226567148180377] \draw [draw opacity=0] (155,35) -- (175,35) -- (175,60) -- (155,60) -- cycle ; %Shape: Rectangle [id:dp5824148166193284] \draw [draw opacity=0] (50,100) -- (70,100) -- (70,125) -- (50,125) -- cycle ; %Shape: Rectangle [id:dp7889295101209588] \draw [draw opacity=0] (135,100) -- (155,100) -- (155,125) -- (135,125) -- cycle ; %Shape: Rectangle [id:dp061736147644933626] \draw [draw opacity=0] (200,100) -- (220,100) -- (220,125) -- (200,125) -- cycle ; %Shape: Rectangle [id:dp20915900011258937] \draw [draw opacity=0] (5,85) -- (15,85) -- (15,145) -- (5,145) -- cycle ; %Shape: Rectangle [id:dp9871829870362693] \draw [draw opacity=0] (155,85) -- (165,85) -- (165,145) -- (155,145) -- cycle ; %Shape: Rectangle [id:dp1125748613748555] \draw [draw opacity=0] (190,85) -- (200,85) -- (200,145) -- (190,145) -- cycle ; % Text Node \draw (30,33) node [font=\footnotesize] {$x$}; % Text Node \draw (60,32.5) node [font=\footnotesize] {$y$}; % Text Node \draw (30,57.5) node [font=\footnotesize] {$w$}; % Text Node \draw (60,57.5) node [font=\footnotesize] {$z$}; % Text Node \draw (115,27) node [font=\footnotesize] {$x$}; % Text Node \draw (145,26.5) node [font=\footnotesize] {$y$}; % Text Node \draw (115,62.5) node [font=\footnotesize] {$w$}; % Text Node \draw (145,62.5) node [font=\footnotesize] {$z$}; % Text Node \draw (165,47.5) node [font=\footnotesize] {$;$}; % Text Node \draw (60,112.5) node [font=\footnotesize] {$;$}; % Text Node \draw (145,112.5) node [font=\footnotesize] {$;$}; % Text Node \draw (210,112.5) node [font=\footnotesize] {$;$}; \end{tikzpicture} \end{document}