kmyk-jikka/Jikka

等式や不等式を解くやつをもっとかしこくする

Closed this issue · 0 comments

kmyk commented

Description / 説明

@hotman78#135src/Jikka/Core/Convert/EqualitySolving.hs を足してくれた。整数についてはそこそこ動く。しかし全部をやりきったわけではないはずで、さらなる改善の余地はある。

例:

  • b >= ab > aa <= ba < b に直す。>=> のことは考えなくてよくなって楽
    • a <= ba < b || a == b にするとか a < ba <= b && a != b にするとかは、するべきかすべきでないか不明
  • 等号の対称律を使った変換。つまり左右を入れ替える。複雑な式を左辺に集めて定数を右辺に集めることにしておくと他の規則が書きやすいはず
  • 組み込み関数の単射性を用いた最適化。単射 f に対し f(a) = f(b) があったら a = b にできる
    • 整数の場合は ... = 0 に揃えられてるので f(a) - f(b) = 0- f(a) + f(b) = 0a - b = 0 にするやつも
    • もう一方がすでに計算済みの場合にもうまくやる。たとえば - a = - ba = b にできるだけでなく - a = 0a = 0 にできる