解説のために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形式で出力してください」だけ言うと「対応してないです」とつっぱねてくるが、無視して指示と一緒に渡すと粛々とグラフを出してくる。とぼけちゃって・・・