2017前回はConstraintGraph単体の実装を見たので、今回はConstraintSystemでの使われ方を見てみる。制約生成のタイミングでsimplifyしても解けなかった制約、つまり型変数を含む制約をグラフに登録しておく。よってグラフに追加されるパターン。経由でグラフに登録する。solverState->addGeneratedConstraint(constraint);}またSolve時solveSimplifyにおいてDisjunctionを試してく際にもグラフに追加される。simplifyでsimplifyConstraintが成功すると、グラフから取り除かれる。主な用途はそれくらい。contractEdgesSolve時にはいろいろ制約を試しながら進めることになるが、制約追加後にグラフの縮約を行う。具体的にはsolveRecでoptimizeが呼ばれている。graph.CG.optimize();縮約後に改めてcomponentをcomputeConnectedComponentsで計算してみて、1つであればそのまま解きにいく。allowFreeTypeVariables);}componentが2つ以上ある場合はそれぞれのcomponentについてSolutionを見つけ、すべての組み合わせを試して全体の解を見つける。まとめ制約生成のタイミングでsimplifyしても解けなかった制約、つまり型変数を含む制約をグラフに登録しておく。solveSimplifyを読む際に追ってみる。