λ(x:Int, y:Int).(x*x + y :Int) を次にように書く。
assume x: Int, y: Int providing z: Int, return z + y of Int where z: Int := x*x
もっと証明っぽく:
we assume x: Int and y: Int it suffices to prove z: Int because the result comes from z + y so try z we showed Int from x*x
演算子=関数 をルールっぽく書くと:
we assume x: Int and y: Int it suffices to prove z: Int because the result comes from add z y so try z we showed Int from mul x x
日本語:
x: Int and y: Int と仮定する z: Int を示せば十分である なぜなら add z y から結果は得られるから では z を示そう 我々は mul x x により Int を示せた
同義語や表記の揺れを認める。
- により = から
- 証明すれば = 提示すれば = 示せば
- を示そう = に挑戦しよう = を証明しよう
- 我々は 省略可能
- 示せた = 示した = 証明した
- 結果 = 結論 = 目標
証明項の全体
<<証明| x: Int 、 y: Int と仮定する z: Int を示せば十分である なぜなら add z y から結果は得られるから では z を示そう 我々は mul x x により Int を示せた >>
Literate Programming と Verifiable Writing が双対だがほぼ同じこと。