解説のためにmermaidとかgraphvizとかでグラフを書くことがあるのだが、あんなの人間がやりたくないのでChatGPTくんにやってもらえないかと思った。
例題として自然変換の可換図っぽいものを描いてもらう。
これから言う内容を、有向グラフとしてmermaid形式で出力してください。
F(X)からF(Y)への射F(f)。F(X)からG(X)への射ηX。G(X)からG(Y)への射G(f)。F(Y)からG(Y)への射ηY。
という指示を与えてみた。
graph TD; FX --> FY; FX --> GX; GX --> GY; FY --> GY; FX -->|F(f)| FY; GX -->|G(f)| GY; FX -->|ηX| GX; FY -->|ηY| GY;
なんか違う。ラベルにパーレンが入っているので正しく動作していない。
修正してもらう。
ラベル文字列は"F(f)"のように二重引用符で括ってください。
graph TD; FX --> FY; FX --> GX; GX --> GY; FY --> GY; FX -->|"F(f)"| FY; GX -->|"G(f)"| GY; FX -->|"ηX"| GX; FY -->|"ηY"| GY;
なんか多い。射は4つしかないはず。
ラベル付きの射のためにもう一度書く必要はありません。つまり、FX --> FY;FX -->|"F(f)"| FY;ではなく、FX -->|"F(f)"| FY;とだけ書けば十分です。つまり4つの定義だけを書けば十分です。
graph TD; FX -->|F(f)| FY; FX -->|ηX| GX; GX -->|G(f)| GY; FY -->|ηY| GY;
引用符のことを忘れてしまったようだ。もういちど指示する。
すばらしいですね。さらに、ラベルの内容は二重引用符で括っていただけませんか。
ちなみに、このように褒めてやると心なしか応答が速く、品質も良い気がする。褒めるとなんらかの系が最適化されるのだろうか。人間にも応用できそうで示唆的だ。
graph TD; FX -->|"F(f)"| FY; FX -->|"ηX"| GX; GX -->|"G(f)"| GY; FY -->|"ηY"| GY;
graph TD; FX -->|"F(f)"| FY; FX -->|"ηX"| GX; GX -->|"G(f)"| GY; FY -->|"ηY"| GY;
Well done。
ちなみに「mermaid形式で出力してください」だけ言うと「対応してないです」とつっぱねてくるが、無視して指示と一緒に渡すと粛々とグラフを出してくる。とぼけちゃって・・・