問題の分析には、現在ではUMLがあります。また、テキストでUMLの各種記述を行なう記法もあります。
では、テキストでのUMLを用いての仕様記述を考えているかと言うと、考えていません。
まず、文芸的プログラミングをベースに、特に「珠玉のプログラミング」における不変表明においてはVDMを参考にした記法が可能ではないかと考えています。
そのあたりはあり物を参考にできるのですが、問題はデータ構造です。UMLの場合、あくまで「オブジェクト」ですので、データ構造は書きやすいものとしてはレコードに制限されます。
対して、データ構造としては木、リスト、グラフ、スタックなどなどがあります。ここをうまく書ける方法はないか調べ、および検討しています。
木やリストの場合なら単純に a := [ a | a ] というような書き方ができます。
木とリストは区別したいところでもあるのですが、この時点ですでに悩んでいます。
書き方としては、a := [ h | a ] , h := a というような書き方もできないことはありません。
ただ、リストによって木を書けることも考えると、区別する必要があるのかという疑問もあります。
基本的なデータ構造は数が限られているので、a := tree と書いてしまうこともできないわけではないかと思いますが。