自動解答系の作り方(7)

 今回のシステムでは,問題文を先頭から末尾に向けて走査し対象を定義していくのですが,そのままでは定義の上書きが起こることがあります.次は前回の2013年数学ⅡB第4問の問題文の一部です.

また,点$A$を通り直線$BD$に垂直な直線と直線$OC$の交点を$E$とする.ただし,$0<\theta<\pi$とする.
 以下,$\vec{OA}=\vec{a}$,$\vec{OC}=\vec{c}$とおき,実数$t$を用いて$\vec{OE}=t \vec{c}$と表す.

 人間なら曖昧さのシンパシーで理解してくれるところですが,式をそのまま拾う者なら\vec{OE}=t \vec{c}は左辺を右辺によって定義したものとして,先行した点Eの交点としての定義を上書すると捉えるでしょう.数学としては,この等式はtの定義なので,t=\frac{\vec{OE}\cdot\vec{c}}{|\vec{c}|^{2}}などとするか,直線OC上にあるという性質をも含むことから先の交点の設定とまとめて導入すべきものなので,譲る余地はありません.

 しかし,これはあくまで試験問題ですから,それに対応し,かつ,一般性を欠かない基準を設けておかねばならず,本システムでは,最初に現れたものを定義,残りを性質として扱います(他にも利用されている文字数やキーワードから判断する方法も考えられますが...).何れにせよ,多くの場合,ロジカルな性質はMathematica自体での定義に比べ格段に負荷が大きいことからも,気持ちの悪い定義の重複はないにこしたことはありません.