再起版のプログラムを書くとリストに破壊的代入を行っても問題ない(cleanで言うところの一意性)を証明して、ループと代入を使ったプログラムに最適化したりするという研究があったな。
プログラムに関するいろんな公理を教えておく必要があるが、デモを見た限り結構賢そう。
どこまでできるのかは知らないけど。