Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

等式を解くことを試みる #126

Closed
11 tasks done
kmyk opened this issue Aug 1, 2021 · 2 comments · Fixed by #135
Closed
11 tasks done

等式を解くことを試みる #126

kmyk opened this issue Aug 1, 2021 · 2 comments · Fixed by #135
Labels
good first issue Good for newcomers

Comments

@kmyk
Copy link
Collaborator

kmyk commented Aug 1, 2021

  • 一般
    • 構文木として a と b が等しいなら a == btrue にする
  • 整数について
    • 右辺を 0 にする。つまり a == ba - b == 0 にする
      • 両辺に分かれていたものがひとつの式になれば、別の最適化器 Jikka.Core.Convert.ArithmeticalExpr が頑張ってくれます
    • 組み込み関数 f であって単射なものについて f(a) - f(b) == 0a - b == 0 にする
  • リストについて
    • nil == cons(x, xs)false
    • cons(x, xs) == cons(y, ys)x == y && xs == ys に展開する
  • 真偽値について
    • a == truea
    • a == falsenot a
@kmyk
Copy link
Collaborator Author

kmyk commented Aug 1, 2021

@hotman78 いきなり FFT とかはしんどいと思うので、まずはこの最適化をやってみてほしい

  • すでに似たようなことをしている最適化器を丸ごとコピペして修正して動かすのがよさそう
  • テストの実行方法などは CONTRIBUTING.ja.md にあります
  • 両側が定数の場合のものは src/Jikka/Core/Convert/ConstantFolding.hs にあるので参考になりそう
  • a == b という式の構文木は内部的には Equal' t a b という形ですが、この t には型が入っています

https://github.com/kmyk/Jikka/blob/13accbadd4aeb7ce49e76742a8f89fd960b0c261/src/Jikka/Core/Convert/ConstantFolding.hs#L182-L207

@kmyk kmyk added the good first issue Good for newcomers label Aug 2, 2021
@hotman78
Copy link
Contributor

hotman78 commented Aug 2, 2021

ありがとうございます。
早速始めてみようと思います。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants