ループする REWRITE たち
例えば
# REAL_NEG_MINUS1;; val it : thm = |- !x. --x = -- &1 * x
を `-- x` に適用しようと
# REWRITE_CONV [REAL_NEG_MINUS1] `-- x`;;
としても...帰ってきません.
これは等式の右辺の -- &1 にも同じ書き換えが適用され,ループに陥っている為です.したがって
# ONCE_REWRITE_CONV [REAL_NEG_MINUS1] `-- x`;; val it : thm = |- --x = -- &1 * x # funpow 3 (rand o concl o (ONCE_REWRITE_CONV [REAL_NEG_MINUS1])) `-- x` ;; val it : term = `((-- &1 * &1) * &1) * x`
のようにします.