File size: 8,275 Bytes
80d7559 | 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 | <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 400" width="600" height="400">
<defs>
<linearGradient id="bg" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" style="stop-color:#0a0a0f"/>
<stop offset="100%" style="stop-color:#1a0a2e"/>
</linearGradient>
<linearGradient id="curry-grad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#ff6b35"/>
<stop offset="100%" style="stop-color:#ff2200"/>
</linearGradient>
<linearGradient id="crystal-grad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#00ffcc"/>
<stop offset="100%" style="stop-color:#0088ff"/>
</linearGradient>
<linearGradient id="c3-grad" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#a855f7"/>
<stop offset="100%" style="stop-color:#7c3aed"/>
</linearGradient>
<filter id="glow">
<feGaussianBlur stdDeviation="3" result="blur"/>
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic"/>
</feMerge>
</filter>
</defs>
<!-- Background -->
<rect width="600" height="400" fill="url(#bg)"/>
<!-- Title -->
<text x="300" y="35" text-anchor="middle" fill="#ffffff" font-family="monospace" font-size="16" font-weight="bold">CARRY BRAID — Authority Transfer (B3)</text>
<text x="300" y="55" text-anchor="middle" fill="#888888" font-family="monospace" font-size="11">Braid Word: sigma_2 . sigma_1 | Writhe = +2</text>
<!-- Column labels -->
<text x="100" y="85" text-anchor="middle" fill="#ff6b35" font-family="monospace" font-size="12">INITIAL</text>
<text x="300" y="85" text-anchor="middle" fill="#00ffcc" font-family="monospace" font-size="12">After sigma_2</text>
<text x="500" y="85" text-anchor="middle" fill="#a855f7" font-family="monospace" font-size="12">After sigma_1</text>
<!-- Position labels -->
<text x="30" y="150" text-anchor="middle" fill="#666" font-family="monospace" font-size="10">pos 0</text>
<text x="30" y="230" text-anchor="middle" fill="#666" font-family="monospace" font-size="10">pos 1</text>
<text x="30" y="310" text-anchor="middle" fill="#666" font-family="monospace" font-size="10">pos 2</text>
<!-- INITIAL STATE: [Curry, Crystal, C3] -->
<!-- Curry at pos 0 -->
<circle cx="100" cy="145" r="20" fill="url(#curry-grad)" filter="url(#glow)">
<animate attributeName="opacity" values="0.7;1;0.7" dur="2s" repeatCount="indefinite"/>
</circle>
<text x="100" y="150" text-anchor="middle" fill="#fff" font-family="monospace" font-size="9" font-weight="bold">CURRY</text>
<!-- Crystal at pos 1 -->
<circle cx="100" cy="225" r="20" fill="url(#crystal-grad)" filter="url(#glow)">
<animate attributeName="opacity" values="0.7;1;0.7" dur="2s" repeatCount="indefinite" begin="0.3s"/>
</circle>
<text x="100" y="230" text-anchor="middle" fill="#fff" font-family="monospace" font-size="8" font-weight="bold">CRYSTAL</text>
<!-- C3 at pos 2 -->
<circle cx="100" cy="305" r="20" fill="url(#c3-grad)" filter="url(#glow)">
<animate attributeName="opacity" values="0.7;1;0.7" dur="2s" repeatCount="indefinite" begin="0.6s"/>
</circle>
<text x="100" y="310" text-anchor="middle" fill="#fff" font-family="monospace" font-size="11" font-weight="bold">C3</text>
<!-- CROSSING sigma_2: swap pos 1 and pos 2 (C3 crosses over Crystal) -->
<!-- Arrow from C3(pos2) to pos1 -->
<path d="M 130,305 C 180,305 220,225 270,225" stroke="#a855f7" stroke-width="2.5" fill="none" stroke-dasharray="5,3" filter="url(#glow)">
<animate attributeName="stroke-dashoffset" values="0;-16" dur="1s" repeatCount="indefinite"/>
</path>
<!-- Arrow from Crystal(pos1) to pos2 -->
<path d="M 130,225 C 180,225 220,305 270,305" stroke="#00ffcc" stroke-width="2.5" fill="none" stroke-dasharray="5,3">
<animate attributeName="stroke-dashoffset" values="0;-16" dur="1s" repeatCount="indefinite"/>
</path>
<!-- Curry stays -->
<path d="M 130,145 L 270,145" stroke="#ff6b35" stroke-width="2" fill="none" opacity="0.5"/>
<!-- sigma_2 label -->
<text x="200" y="270" text-anchor="middle" fill="#a855f7" font-family="monospace" font-size="13" font-weight="bold">sigma_2</text>
<text x="200" y="285" text-anchor="middle" fill="#666" font-family="monospace" font-size="9">C3 over Crystal</text>
<!-- AFTER sigma_2: [Curry, C3, Crystal] -->
<!-- Curry still at pos 0 -->
<circle cx="300" cy="145" r="20" fill="url(#curry-grad)" filter="url(#glow)">
<animate attributeName="opacity" values="0.7;1;0.7" dur="2s" repeatCount="indefinite"/>
</circle>
<text x="300" y="150" text-anchor="middle" fill="#fff" font-family="monospace" font-size="9" font-weight="bold">CURRY</text>
<!-- C3 now at pos 1 -->
<circle cx="300" cy="225" r="20" fill="url(#c3-grad)" filter="url(#glow)">
<animate attributeName="opacity" values="0.7;1;0.7" dur="2s" repeatCount="indefinite" begin="0.6s"/>
</circle>
<text x="300" y="230" text-anchor="middle" fill="#fff" font-family="monospace" font-size="11" font-weight="bold">C3</text>
<!-- Crystal now at pos 2 -->
<circle cx="300" cy="305" r="20" fill="url(#crystal-grad)" filter="url(#glow)">
<animate attributeName="opacity" values="0.7;1;0.7" dur="2s" repeatCount="indefinite" begin="0.3s"/>
</circle>
<text x="300" y="310" text-anchor="middle" fill="#fff" font-family="monospace" font-size="8" font-weight="bold">CRYSTAL</text>
<!-- CROSSING sigma_1: swap pos 0 and pos 1 (C3 crosses over Curry) -->
<!-- Arrow from C3(pos1) to pos0 -->
<path d="M 330,225 C 380,225 420,145 470,145" stroke="#a855f7" stroke-width="2.5" fill="none" stroke-dasharray="5,3" filter="url(#glow)">
<animate attributeName="stroke-dashoffset" values="0;-16" dur="1s" repeatCount="indefinite"/>
</path>
<!-- Arrow from Curry(pos0) to pos1 -->
<path d="M 330,145 C 380,145 420,225 470,225" stroke="#ff6b35" stroke-width="2.5" fill="none" stroke-dasharray="5,3">
<animate attributeName="stroke-dashoffset" values="0;-16" dur="1s" repeatCount="indefinite"/>
</path>
<!-- Crystal stays -->
<path d="M 330,305 L 470,305" stroke="#00ffcc" stroke-width="2" fill="none" opacity="0.5"/>
<!-- sigma_1 label -->
<text x="400" y="190" text-anchor="middle" fill="#a855f7" font-family="monospace" font-size="13" font-weight="bold">sigma_1</text>
<text x="400" y="205" text-anchor="middle" fill="#666" font-family="monospace" font-size="9">C3 over Curry</text>
<!-- FINAL STATE: [C3, Curry, Crystal] — C3 HAS AUTHORITY -->
<!-- C3 at pos 0 (AUTHORITY) -->
<circle cx="500" cy="145" r="22" fill="url(#c3-grad)" filter="url(#glow)" stroke="#ffffff" stroke-width="2">
<animate attributeName="r" values="20;24;20" dur="1.5s" repeatCount="indefinite"/>
</circle>
<text x="500" y="150" text-anchor="middle" fill="#fff" font-family="monospace" font-size="11" font-weight="bold">C3</text>
<!-- Curry at pos 1 -->
<circle cx="500" cy="225" r="18" fill="url(#curry-grad)" opacity="0.7"/>
<text x="500" y="230" text-anchor="middle" fill="#fff" font-family="monospace" font-size="9">CURRY</text>
<!-- Crystal at pos 2 -->
<circle cx="500" cy="305" r="18" fill="url(#crystal-grad)" opacity="0.7"/>
<text x="500" y="310" text-anchor="middle" fill="#fff" font-family="monospace" font-size="8">CRYSTAL</text>
<!-- Authority indicator -->
<text x="500" y="115" text-anchor="middle" fill="#a855f7" font-family="monospace" font-size="10" font-weight="bold">AUTHORITY</text>
<polygon points="490,120 500,128 510,120" fill="#a855f7">
<animate attributeName="opacity" values="0.5;1;0.5" dur="1s" repeatCount="indefinite"/>
</polygon>
<!-- Bottom proof box -->
<rect x="50" y="345" width="500" height="45" rx="5" fill="rgba(168,85,247,0.1)" stroke="#a855f7" stroke-width="1"/>
<text x="300" y="365" text-anchor="middle" fill="#00ff88" font-family="monospace" font-size="12" font-weight="bold">BRAID INVARIANT HOLDS</text>
<text x="300" y="382" text-anchor="middle" fill="#888" font-family="monospace" font-size="10">writhe = +2 | C3 at pos 0 | Reidemeister: no cancellation</text>
</svg>
|