スレがないので立ててみた
参考ページ
http://en.wikipedia.org/wiki/Formal_methods
http://ja.wikipedia.org/wiki/%E5%BD%A2%E5%BC%8F%E6%89%8B%E6%B3%95
【Alloy】形式言語による仕様記述【VDM】
■ このスレッドは過去ログ倉庫に格納されています
2013/01/05(土) 21:09:06.67
116デフォルトの名無しさん
2013/09/13(金) 23:21:23.48 >>114
Wikipediaの「形式手法」で説明されているように、
形式手法にもレベルがあっていいじゃないかと
で、伝統的なZやVDMは重量級で、Alloyなど最近は軽量級が注目されている
Prologについては、(>>108で書いたように)純粋Prologの表現力と型付けの弱さという欠点が、
軽量な形式手法としても問題が多いと見る
ただし、これは形式手法としての問題点であって、プログラミング言語としての問題ではない
また、PrologにはDCGによるDSL(ドメイン記述言語)およびメタインタプリタの開発に
適しているという、優れた特性がある
これを活かし、あるドメインに特化した軽量仕様記述言語と処理系を開発すれば、
先に述べた欠点を補うことができると思う
以下は、Prologで過去に開発した仕様記述言語で、2進カウンタを記述している:
process binCounter(ins:in, outs:out, carry:out).
state 0.
from 0,
when ins$0, output (outs$0, carry$0), to 0.
when ins$1, output (outs$1, carry$0), to 1.
from 1,
when ins$0, output (outs$1, carry$0), to 1.
when ins$1, output (outs$0, carry$1), to 0.
言語は通信プロトコルの仕様記述言語である Estelle を参考にしたステートマシンをモデルとし、
シミュレーション(=模倣)による振る舞いの確認が可能
最終的にはペトリネットへ変換して検証する予定だったけど、着手できぬまま放置している
Wikipediaの「形式手法」で説明されているように、
形式手法にもレベルがあっていいじゃないかと
で、伝統的なZやVDMは重量級で、Alloyなど最近は軽量級が注目されている
Prologについては、(>>108で書いたように)純粋Prologの表現力と型付けの弱さという欠点が、
軽量な形式手法としても問題が多いと見る
ただし、これは形式手法としての問題点であって、プログラミング言語としての問題ではない
また、PrologにはDCGによるDSL(ドメイン記述言語)およびメタインタプリタの開発に
適しているという、優れた特性がある
これを活かし、あるドメインに特化した軽量仕様記述言語と処理系を開発すれば、
先に述べた欠点を補うことができると思う
以下は、Prologで過去に開発した仕様記述言語で、2進カウンタを記述している:
process binCounter(ins:in, outs:out, carry:out).
state 0.
from 0,
when ins$0, output (outs$0, carry$0), to 0.
when ins$1, output (outs$1, carry$0), to 1.
from 1,
when ins$0, output (outs$1, carry$0), to 1.
when ins$1, output (outs$0, carry$1), to 0.
言語は通信プロトコルの仕様記述言語である Estelle を参考にしたステートマシンをモデルとし、
シミュレーション(=模倣)による振る舞いの確認が可能
最終的にはペトリネットへ変換して検証する予定だったけど、着手できぬまま放置している
117デフォルトの名無しさん
2013/09/14(土) 01:22:47.81 VDM ToolsもOvertureも証明の機能が不十分だから
形式手法のレベルで分類すればVDMはもっぱら軽量じゃね?
まあこの際どうでもいいが
形式手法のレベルで分類すればVDMはもっぱら軽量じゃね?
まあこの際どうでもいいが
118デフォルトの名無しさん
2013/09/14(土) 13:12:05.22 >>117
形式言語 VDM と形式言語処理系 VDM Tools をごっちゃにすべきではない
言語 C と 処理系 gcc(あるいは VC++) をごっちゃにするようなもの
言語としての VDM は形式的な証明が可能な体系
(ただし、それを機械的に適用できるか否かは別の話)
そして、処理系としての「VDM Tools はもっぱら軽量じゃね?」ならば、同意する
形式言語 VDM と形式言語処理系 VDM Tools をごっちゃにすべきではない
言語 C と 処理系 gcc(あるいは VC++) をごっちゃにするようなもの
言語としての VDM は形式的な証明が可能な体系
(ただし、それを機械的に適用できるか否かは別の話)
そして、処理系としての「VDM Tools はもっぱら軽量じゃね?」ならば、同意する
119デフォルトの名無しさん
2013/09/14(土) 13:32:16.32 そりゃごっちゃにすべきじゃない文脈もあるだろうが
C言語の喩えで言えば
gccもVCも対応していない機能はないようなものでしょ
C言語の仕様策定は実装ありきだから
そのうち対応する見込みはあるけど
VDMで証明とかOverture界隈も興味の対象から外れている感じだし先が見えん
C言語の喩えで言えば
gccもVCも対応していない機能はないようなものでしょ
C言語の仕様策定は実装ありきだから
そのうち対応する見込みはあるけど
VDMで証明とかOverture界隈も興味の対象から外れている感じだし先が見えん
120デフォルトの名無しさん
2013/09/14(土) 15:56:52.26121デフォルトの名無しさん
2013/09/14(土) 16:17:21.73 言語規格だか何だか知らんが絵に描いた餅でも喰ってろ
VDM-SLはISO化されたが
VDM++に関しては文法こそ仕様はあるものの
挙動は実装が仕様みたいな状況だぞ
VDM-SLはISO化されたが
VDM++に関しては文法こそ仕様はあるものの
挙動は実装が仕様みたいな状況だぞ
122デフォルトの名無しさん
2013/09/14(土) 20:04:31.44 挙動なんて言ってる時点で
静的解析をガン無視してるのはVDM界隈じゃなくて>>121だということがわかる。
静的解析をガン無視してるのはVDM界隈じゃなくて>>121だということがわかる。
123デフォルトの名無しさん
2013/09/14(土) 22:53:25.27 だったらVDMの静的解析に期待を持てるような
実績や活用法の情報をくれよ
実績や活用法の情報をくれよ
124デフォルトの名無しさん
2013/09/14(土) 23:08:58.11125デフォルトの名無しさん
2013/09/14(土) 23:15:08.44 >>122に言えよ
126デフォルトの名無しさん
2013/09/14(土) 23:23:18.69127デフォルトの名無しさん
2013/09/14(土) 23:42:17.97 >>124
選民意識も結構だが
「馬鹿には無理」みたいなこというから形式手法が馬鹿にされる
ユーザに技術の存在を意識させないというのは
道具のあるべき姿の一つだが
stealth formal methodsなんてフレーズが生まれるのは何かおかしい
選民意識も結構だが
「馬鹿には無理」みたいなこというから形式手法が馬鹿にされる
ユーザに技術の存在を意識させないというのは
道具のあるべき姿の一つだが
stealth formal methodsなんてフレーズが生まれるのは何かおかしい
128デフォルトの名無しさん
2013/09/15(日) 00:48:45.39129デフォルトの名無しさん
2013/09/15(日) 07:45:12.05 >>123
つ 「型検査」
つ 「型検査」
130デフォルトの名無しさん
2013/09/15(日) 14:17:26.84 型検査なんかプログラミング言語で一般的過ぎて
期待も何もスタートラインだろ
整数(int, nat, nat1)とトークンだけで記述できる場合はまだしも
レコードやクラスを使い始めると
モダンなプログラミング言語に比べ使い勝手の悪さが目立つ
さらに証明までやろうとすると証明責務が無理ゲーになる
結果としてユーザが気軽に型を作れない
期待も何もスタートラインだろ
整数(int, nat, nat1)とトークンだけで記述できる場合はまだしも
レコードやクラスを使い始めると
モダンなプログラミング言語に比べ使い勝手の悪さが目立つ
さらに証明までやろうとすると証明責務が無理ゲーになる
結果としてユーザが気軽に型を作れない
131デフォルトの名無しさん
2013/09/15(日) 14:34:04.62 VDM++に関して言えば演算子オーバーロードはつけるべきだった
メソッド名に全角の≦とかを使うなんてバッドノウハウは見るに耐えない
インターフェイスやMix-inも言語レベルで対応してない
テンプレートやジェネリクスもない
これらはプログラマが楽するための道具に留まらず
データ表現を抽象化してロジックに意識を集中させるために
仕様記述に有効な機能じゃなかろうか
メソッド名に全角の≦とかを使うなんてバッドノウハウは見るに耐えない
インターフェイスやMix-inも言語レベルで対応してない
テンプレートやジェネリクスもない
これらはプログラマが楽するための道具に留まらず
データ表現を抽象化してロジックに意識を集中させるために
仕様記述に有効な機能じゃなかろうか
132デフォルトの名無しさん
2013/09/15(日) 16:58:56.24 証明しにくくするだけ
133デフォルトの名無しさん
2013/09/15(日) 18:02:44.28 仕様を書く人が
証明のこと気にしないといけないのが未成熟な証
ASTなり中間言語にさえ落とし込めさえすれば
あとは数学者やコンピュータサイエンティストの仕事だ
証明のこと気にしないといけないのが未成熟な証
ASTなり中間言語にさえ落とし込めさえすれば
あとは数学者やコンピュータサイエンティストの仕事だ
134デフォルトの名無しさん
2013/09/15(日) 18:22:03.16 そりゃないわ。
135デフォルトの名無しさん
2013/09/15(日) 18:35:46.84 >>133
>あとは数学者やコンピュータサイエンティストの仕事だ
いや、それはAI(人工知能)の仕事だよ
自然語で書かれた曖昧な仕様を、コンピュータが理解できる機械語へ変換するという
もちろん、これが理想の姿であるのは理解するが、現時点では夢物語でしかない
だから、自然言語で書く曖昧な(非形式的な)仕様の代わりに、
(数学を元にした)形式的な仕様記述を試みよう、という思想が形式手法の出発点にある
>>133には、C.A.R. ホーアの言葉を送ろう:
職業としてプログラミング業務を行うためには、基礎となる数学理論に基づき、
すでに確立された他の工学分野の先例にならわなければならない。
これは教育を改善することによって実現することができる。
「プログラミング -- 魔術か科学か?」から引用
>あとは数学者やコンピュータサイエンティストの仕事だ
いや、それはAI(人工知能)の仕事だよ
自然語で書かれた曖昧な仕様を、コンピュータが理解できる機械語へ変換するという
もちろん、これが理想の姿であるのは理解するが、現時点では夢物語でしかない
だから、自然言語で書く曖昧な(非形式的な)仕様の代わりに、
(数学を元にした)形式的な仕様記述を試みよう、という思想が形式手法の出発点にある
>>133には、C.A.R. ホーアの言葉を送ろう:
職業としてプログラミング業務を行うためには、基礎となる数学理論に基づき、
すでに確立された他の工学分野の先例にならわなければならない。
これは教育を改善することによって実現することができる。
「プログラミング -- 魔術か科学か?」から引用
136デフォルトの名無しさん
2013/09/15(日) 19:10:48.05 形式的な検証を目的に形式仕様を書くのなら
証明のことを気にするのは当然だろw
証明のことを気にするのは当然だろw
137デフォルトの名無しさん
2013/09/15(日) 19:26:34.98138デフォルトの名無しさん
2013/09/15(日) 19:52:25.00 形式手法に限らず、大抵のものは「気にしないと使えない」だろ。
オブジェクト指向だって関数型だってCoqやAgdaだって、
記述目的を意識して書かないとクソな記述になるのと同じだろ。
オブジェクト指向だって関数型だってCoqやAgdaだって、
記述目的を意識して書かないとクソな記述になるのと同じだろ。
139デフォルトの名無しさん
2013/09/15(日) 20:06:00.03 程度問題だよ
少なくとも俺にとってはVDMとりわけVDM++は
仕様を記述するには気が利かないし面倒くさ過ぎる
そのくせ証明による検証も大して期待できない
勿論そう思わない人もいるだろう
そういう人は是非とも形式仕様記述を活用して普及に努めてもらいたい
少なくとも俺にとってはVDMとりわけVDM++は
仕様を記述するには気が利かないし面倒くさ過ぎる
そのくせ証明による検証も大して期待できない
勿論そう思わない人もいるだろう
そういう人は是非とも形式仕様記述を活用して普及に努めてもらいたい
140デフォルトの名無しさん
2013/09/15(日) 21:08:48.08141デフォルトの名無しさん
2013/09/15(日) 21:25:23.64 スレチってほどでもないと思うけど
SATソルバの話題とかしてもいいんじゃね?
どうせ過疎ってるか
愚痴や揚げ足取りの応酬しかしてないんだし
SATソルバの話題とかしてもいいんじゃね?
どうせ過疎ってるか
愚痴や揚げ足取りの応酬しかしてないんだし
142デフォルトの名無しさん
2013/09/16(月) 00:03:43.85 そんなことより、皆さん、どうやってデッドロック回避してるの?
143デフォルトの名無しさん
2013/09/16(月) 00:42:33.03144デフォルトの名無しさん
2013/09/16(月) 19:32:39.59 どっちが先に根負けするか賭けようぜ
俺は最初の奴とみた
俺は最初の奴とみた
145デフォルトの名無しさん
2013/09/16(月) 20:44:16.20 どっちって誰と誰だよ
146デフォルトの名無しさん
2013/09/16(月) 20:50:19.99 ざーっと追ってあなたの思う両者でよかろう
傍観者的には、すでに1on1じゃなく途中から同意見者が混ざって混乱してる可能性もありそうに感じた
傍観者的には、すでに1on1じゃなく途中から同意見者が混ざって混乱してる可能性もありそうに感じた
147デフォルトの名無しさん
2013/09/16(月) 21:05:43.76 4,5人が入り混じった乱戦だろw
148デフォルトの名無しさん
2013/09/16(月) 21:14:01.04 このスレで興味もってざっとぐぐってるんですが、なかなか面白そうな分野ですね。
書籍やサイトのお勧めあったらご教示願えると幸いです
書籍やサイトのお勧めあったらご教示願えると幸いです
150デフォルトの名無しさん
2013/10/03(木) 20:35:05.95 へー(ニヤニヤ
Zの言語仕様がデカいと思っている人のセンスがいいとか言うのって
本人以外考えられないけどw
Zの言語仕様がデカいと思っている人のセンスがいいとか言うのって
本人以外考えられないけどw
151デフォルトの名無しさん
2013/10/03(木) 23:29:48.73 ニヤニヤすんな
要らん言うてんやろ
要らん言うてんやろ
152デフォルトの名無しさん
2013/10/04(金) 07:56:58.26 で、Zの言語仕様のどこがデカいわけ?
ぼくちゃん学習者なんで教えてくださいませ〜
ぼくちゃん学習者なんで教えてくださいませ〜
153デフォルトの名無しさん
2013/10/04(金) 08:42:40.94 >>152
単一化と導出・融合だけの pure Prolog に較べると途方もなく大きいのではないか。
単一化と導出・融合だけの pure Prolog に較べると途方もなく大きいのではないか。
154デフォルトの名無しさん
2013/10/04(金) 09:17:10.07 Zの言語仕様には単一化もレゾリューションもNAFもないよ。
どうして実行機構を持たないZのほうが言語仕様がデカいと思うんだい?
どうして実行機構を持たないZのほうが言語仕様がデカいと思うんだい?
155デフォルトの名無しさん
2013/10/04(金) 10:09:22.67 言語仕様の大きさは
処理系やツールを実装する人にとっては重要かもしれないけど
ユーザにとっては重要じゃないよね。
何ができるか・何をしないといけないかが重要。
そしてそれは言語仕様の大きさと必ずしも対応しない。
言語仕様の大きさで議論しようというのがそもそも筋が悪い。
言語仕様を全部把握していないと使えない訳じゃあるまい。
処理系やツールを実装する人にとっては重要かもしれないけど
ユーザにとっては重要じゃないよね。
何ができるか・何をしないといけないかが重要。
そしてそれは言語仕様の大きさと必ずしも対応しない。
言語仕様の大きさで議論しようというのがそもそも筋が悪い。
言語仕様を全部把握していないと使えない訳じゃあるまい。
156デフォルトの名無しさん
2013/10/04(金) 10:19:02.52 結論:>>100は筋悪
157デフォルトの名無しさん
2013/10/04(金) 10:20:01.06158デフォルトの名無しさん
2013/10/04(金) 12:53:16.23 すじわる、って将棋以外で聞かない単語だよね。
まあ筋が悪いとは普通に使うんだから字面を見てわかると思うけど。
まあ筋が悪いとは普通に使うんだから字面を見てわかると思うけど。
159112
2013/10/04(金) 15:11:02.46 >>154
ここでいう言語仕様とは学習しなくてはならない範囲の
意味が強いと思う。そういう意味なら、一人で使う場合は
別だが、他者の形式仕様を読む場合にはひと通りは抑えて
いなくてはならず、Zはその点やはり負担が大きい。
ここでいう言語仕様とは学習しなくてはならない範囲の
意味が強いと思う。そういう意味なら、一人で使う場合は
別だが、他者の形式仕様を読む場合にはひと通りは抑えて
いなくてはならず、Zはその点やはり負担が大きい。
160デフォルトの名無しさん
2013/10/04(金) 16:02:12.94 Zは基本的に述語論理と型付集合論がわかってれば
覚えなければならない事はとても少ないだろ。
むしろVDMやAlloyあたりのほうが
述語論理や型付集合論以外の言語要素が多いと思う。
Zで苦労するのは他の言語/手法と比べてツールサポートが少ないことだろ。
覚えなければならない事はとても少ないだろ。
むしろVDMやAlloyあたりのほうが
述語論理や型付集合論以外の言語要素が多いと思う。
Zで苦労するのは他の言語/手法と比べてツールサポートが少ないことだろ。
161デフォルトの名無しさん
2013/10/04(金) 16:30:35.19162デフォルトの名無しさん
2013/10/04(金) 16:33:28.90163デフォルトの名無しさん
2013/10/04(金) 21:30:59.69 ZもVDMも基本は70年代の言語だからなぁ
比較的新しい言語だとCafeOBJなんかがあるけど
二木先生の関わっていない利用例を知らない
比較的新しい言語だとCafeOBJなんかがあるけど
二木先生の関わっていない利用例を知らない
164デフォルトの名無しさん
2013/10/04(金) 21:49:13.71165デフォルトの名無しさん
2013/10/04(金) 21:58:38.09166デフォルトの名無しさん
2013/10/04(金) 22:06:34.37 観点は計算可能性だけじゃないだろ
まだチューリング完全なんて言ってるのか
まだチューリング完全なんて言ってるのか
167デフォルトの名無しさん
2013/10/04(金) 22:10:26.71 観点は言語仕様の大きさだけじゃないだろ
って話だよ
チューリング完全ならどれも一緒だなんて誰も思っちゃいねーよ
って話だよ
チューリング完全ならどれも一緒だなんて誰も思っちゃいねーよ
168デフォルトの名無しさん
2013/10/04(金) 22:30:01.22 だれかこの辺の議論のような口喧嘩のようなことを交通整理できる人はいないでしょうか
169デフォルトの名無しさん
2013/10/04(金) 23:00:21.87 そういった態度というのは単に自信が無いだけなので、
生暖かく放置すればいいのではないかと思われ
生暖かく放置すればいいのではないかと思われ
170デフォルトの名無しさん
2013/10/04(金) 23:07:34.51 ところで、Prologで仕様記述やその検証ができるなら試してみたいんだが、
その方法を解説した本やWebサイトとかあるのかな?
「理論的にはできるはず」だけだとProlog自体よく知らない俺には無理だが。
その方法を解説した本やWebサイトとかあるのかな?
「理論的にはできるはず」だけだとProlog自体よく知らない俺には無理だが。
171デフォルトの名無しさん
2013/10/04(金) 23:08:43.39 あんたは自信があるのかい
172デフォルトの名無しさん
2013/10/04(金) 23:32:01.69 >>170
>ところで、Prologで仕様記述やその検証ができるなら
できないんじゃね?
過去には「できるはず...」という願望もしくは妄想に基づく意見(>>95-)はあったけど、
それに対する反論には何も意見を言えず議論を終えた
個人的には、型の無い純粋Prologを形式言語と呼ぶには無理があると考える
Prologへの願望を語りたいという気持ちは理解できるが、
それはPrologスレで大いに語ればいい、それが妄想であってもいい
>ところで、Prologで仕様記述やその検証ができるなら
できないんじゃね?
過去には「できるはず...」という願望もしくは妄想に基づく意見(>>95-)はあったけど、
それに対する反論には何も意見を言えず議論を終えた
個人的には、型の無い純粋Prologを形式言語と呼ぶには無理があると考える
Prologへの願望を語りたいという気持ちは理解できるが、
それはPrologスレで大いに語ればいい、それが妄想であってもいい
173デフォルトの名無しさん
2013/10/05(土) 05:30:54.75 Prologで仕様記述しますなんていう例は山ほどある。
知らないんなら論文読まなさすぎ。
どれも結論は
「表現力不足だよね」
「表現上の制限が強すぎて、かえって表現が冗長になってダメだね」
「最低限FOLは必要だよね、やっぱし」
なわけだが。
知らないんなら論文読まなさすぎ。
どれも結論は
「表現力不足だよね」
「表現上の制限が強すぎて、かえって表現が冗長になってダメだね」
「最低限FOLは必要だよね、やっぱし」
なわけだが。
174デフォルトの名無しさん
2013/10/05(土) 05:33:52.83175デフォルトの名無しさん
2013/10/05(土) 08:56:49.36 Alloyの本を読んでもちっとも頭に入っていきません。
この本を読むうえで必要な前提知識って何でしょうか?
また、その知識を得るのに最適な書籍があれば教えてください。
今は組込み関係の仕事(主に車関係)をしていて、知ってる言語はC言語のみです。
この本を読むうえで必要な前提知識って何でしょうか?
また、その知識を得るのに最適な書籍があれば教えてください。
今は組込み関係の仕事(主に車関係)をしていて、知ってる言語はC言語のみです。
176デフォルトの名無しさん
2013/10/05(土) 10:07:18.70 知識はともかく
詳細仕様や実装仕様じゃなく
純粋なシステム仕様の読み書きをした経験がいるんじゃないかな
組込み関係だとシステム仕様と実装仕様がごっちゃになってる印象がある
実装仕様レベルの形式記述もできるけど
そういうのは実装言語(C言語)のツールを使った方がいいと思う
詳細仕様や実装仕様じゃなく
純粋なシステム仕様の読み書きをした経験がいるんじゃないかな
組込み関係だとシステム仕様と実装仕様がごっちゃになってる印象がある
実装仕様レベルの形式記述もできるけど
そういうのは実装言語(C言語)のツールを使った方がいいと思う
177デフォルトの名無しさん
2013/10/05(土) 18:08:45.67178デフォルトの名無しさん
2013/10/05(土) 18:25:17.75 Zを否定した根拠が「言語仕様のデカさ」だったのに
今更なにを喚いているんだい、負け犬くんw
今更なにを喚いているんだい、負け犬くんw
179デフォルトの名無しさん
2013/10/05(土) 18:35:37.68 「C言語以外は全部無駄」とたいして変わらん主張
180デフォルトの名無しさん
2013/10/05(土) 22:31:33.47 >>164は自分の主張が矛盾しているのに気付かない可哀想な子
>>160が言うように、Zは「述語論理と型付集合論」を知っていれば学習の壁は低い
つまり、もしも>>164の言葉「同じことをするんなら小さい方がよいのに決まっとる」が正しければ、
仕様の小さなZは優れていていることになるが、その一方でツールサポートの少ない「Zは要らん」と言う
では、ナゼそんな矛盾が生まれたのか?これは形式手法へ拒絶反応を起こす人によくあるパターンで、
形式手法を扱うのに前提となる素養(論理と集合)が欠けているからだろう
だから>>164にはZの仕様が(とほうもなく)巨大に見えて尻込みしてしまう
逆にAlloyはツールで実際に動かしながら試行錯誤できるから容易い存在に見える
実際にはAlloyの全容は巨大で難解なものだけど、>>164には表層の一部しか見えていない
おそらく、>>164はERM/OMT/UMLのような「仕様の視覚化手法(visualize method)」には
十分な経験と自信があるのだろう
ところが残念なことに、その延長で「仕様の形式化手法(formal method)」を
理解しようとして、その狭間(ギャップ)で「もがいている」のだと思われる
>>160が言うように、Zは「述語論理と型付集合論」を知っていれば学習の壁は低い
つまり、もしも>>164の言葉「同じことをするんなら小さい方がよいのに決まっとる」が正しければ、
仕様の小さなZは優れていていることになるが、その一方でツールサポートの少ない「Zは要らん」と言う
では、ナゼそんな矛盾が生まれたのか?これは形式手法へ拒絶反応を起こす人によくあるパターンで、
形式手法を扱うのに前提となる素養(論理と集合)が欠けているからだろう
だから>>164にはZの仕様が(とほうもなく)巨大に見えて尻込みしてしまう
逆にAlloyはツールで実際に動かしながら試行錯誤できるから容易い存在に見える
実際にはAlloyの全容は巨大で難解なものだけど、>>164には表層の一部しか見えていない
おそらく、>>164はERM/OMT/UMLのような「仕様の視覚化手法(visualize method)」には
十分な経験と自信があるのだろう
ところが残念なことに、その延長で「仕様の形式化手法(formal method)」を
理解しようとして、その狭間(ギャップ)で「もがいている」のだと思われる
181デフォルトの名無しさん
2013/10/05(土) 22:44:35.57182デフォルトの名無しさん
2013/10/06(日) 06:14:26.21183デフォルトの名無しさん
2013/10/06(日) 10:50:33.15184デフォルトの名無しさん
2013/10/06(日) 11:30:50.49 述語論理も型付集合論も大学の教養レベルの数学で十分なのだから
「人材を集められなかった」のではないと思う。
単に、Zに限らず形式手法なしでもシステムを作れると思ってたんだろ。
だから、Zに限らずモデル規範型の形式手法は顧みられなかった。
「人材を集められなかった」のではないと思う。
単に、Zに限らず形式手法なしでもシステムを作れると思ってたんだろ。
だから、Zに限らずモデル規範型の形式手法は顧みられなかった。
185デフォルトの名無しさん
2013/10/06(日) 18:43:42.19 >>182
>形式手法では式を「コトバ」として読んじゃいけない。
>式はあくまで記号列として読まないと「形式」の意味がわからない。
ここは何を言ってるの?記号列として読んでいるのでは意味が分かっていない
と言われそうだけど。
>形式手法では式を「コトバ」として読んじゃいけない。
>式はあくまで記号列として読まないと「形式」の意味がわからない。
ここは何を言ってるの?記号列として読んでいるのでは意味が分かっていない
と言われそうだけど。
186デフォルトの名無しさん
2013/10/06(日) 22:31:52.02 >>185
横レスだけど、形式手法の証明においては式に含まれる記号の意味は「無価値」だということ
記号の意味を分かる必要は無いし、
証明の過程で記号の意味は完全に無視され「形式(公理や定理)」だけが価値を持つ
ソフトウェア仕様記述は現実世界のモヤモヤした実体(=モノ)をある体系でモデル化することから始まる
たとえばUML等のOOA/OODでは現実世界をオブジェクトの集まりと捉え、オブジェクトの持つ属性や
オブジェクト間の(継承や部分といった)関係を定義することによって(非形式的な)モデル化を進める
ここでは実体をコトバとして抽象化する事を、具体的には定義するオブジェクト/属性/関係などの
命名(naming)を、つまり(人にとっての)直感的な意味を重要視する
これによって(人にとって)分かりやすく、特に共同作業下における仕様イメージの統一的な共有化を図る
これに対して、形式手法では現実世界をモデル化することは(視覚化手法と)同じだけれど、
数学という形式的な体系を用いる点が異なる
つまり、ある式(=モデル)が直感的には(=人にとっては)いかに分かりやすくて正しく見えようとも、
いいかえるといかにOO的視点では優れた設計であっても、形式に矛盾があれば誤りであると見なす
横レスだけど、形式手法の証明においては式に含まれる記号の意味は「無価値」だということ
記号の意味を分かる必要は無いし、
証明の過程で記号の意味は完全に無視され「形式(公理や定理)」だけが価値を持つ
ソフトウェア仕様記述は現実世界のモヤモヤした実体(=モノ)をある体系でモデル化することから始まる
たとえばUML等のOOA/OODでは現実世界をオブジェクトの集まりと捉え、オブジェクトの持つ属性や
オブジェクト間の(継承や部分といった)関係を定義することによって(非形式的な)モデル化を進める
ここでは実体をコトバとして抽象化する事を、具体的には定義するオブジェクト/属性/関係などの
命名(naming)を、つまり(人にとっての)直感的な意味を重要視する
これによって(人にとって)分かりやすく、特に共同作業下における仕様イメージの統一的な共有化を図る
これに対して、形式手法では現実世界をモデル化することは(視覚化手法と)同じだけれど、
数学という形式的な体系を用いる点が異なる
つまり、ある式(=モデル)が直感的には(=人にとっては)いかに分かりやすくて正しく見えようとも、
いいかえるといかにOO的視点では優れた設計であっても、形式に矛盾があれば誤りであると見なす
187デフォルトの名無しさん
2013/10/06(日) 22:55:41.08 >>186
こっちも横レスだけど
証明は形式意味論のレイヤーで行われるけれど
形式仕様自体は現実世界の概念(「コトバ」)とリンクしている
「コトバ」であり「記号列」であることを理解できないと
形式仕様を理解したことにはならんだろう
こっちも横レスだけど
証明は形式意味論のレイヤーで行われるけれど
形式仕様自体は現実世界の概念(「コトバ」)とリンクしている
「コトバ」であり「記号列」であることを理解できないと
形式仕様を理解したことにはならんだろう
188デフォルトの名無しさん
2013/10/06(日) 22:57:20.47 >>186
>形式手法の証明においては式に含まれる記号の意味は「無価値」だということ
それは証明器にとって、ということでしょう。人間にとってではない。
>これに対して、形式手法では現実世界をモデル化することは(視覚化手法と)同じだけれど、
そのモデル化の時点で、「意味」が介在するよね。
>形式に矛盾があれば誤りであると見なす
それは当たり前。矛盾というのは形式的なものだからね。
だからといって「意味」が不要ということにはならない。
>形式手法の証明においては式に含まれる記号の意味は「無価値」だということ
それは証明器にとって、ということでしょう。人間にとってではない。
>これに対して、形式手法では現実世界をモデル化することは(視覚化手法と)同じだけれど、
そのモデル化の時点で、「意味」が介在するよね。
>形式に矛盾があれば誤りであると見なす
それは当たり前。矛盾というのは形式的なものだからね。
だからといって「意味」が不要ということにはならない。
189デフォルトの名無しさん
2013/10/06(日) 23:01:03.54 「形式」手法 "form"-al method という言葉の意味からはじめないといけないようだな!
190デフォルトの名無しさん
2013/10/06(日) 23:11:16.30191デフォルトの名無しさん
2013/10/06(日) 23:15:39.39 みんな数学ガール/ゲーデルの不完全性定理
でも読んで和みたまえ(ステマ)
でも読んで和みたまえ(ステマ)
192デフォルトの名無しさん
2013/10/06(日) 23:30:11.15 >>187,188
現実世界を抽象化する過程に意味が伴うのはその通りで、視覚化手法も形式手法も同じ
形式手法にとっても抽象化の過程ではコトバの意味が大切なのに変わりはない
違うのは、抽象化の成果物である「仕様(設計書)の検証」において、視覚化手法では
(人間が介在する)直感を頼りとしており、そこではコトバの意味が重要な位置を占める
それに対して形式手法では仕様の検証に人の直感は介在せず、コトバの意味は無視する
ここで、証明(=形式を元にした検証)を人力でやろうが証明器で自動化しようが同じ
そして、もし証明が失敗すれば(仕様に矛盾を発見すれば)、現実世界の抽象化という前工程に立ち返る
その時には、(数学としての)形式化の単純ミスもあるだろうけど、コトバの意味(の定義)の過ち、
つまり(抽象化の過程で)現実世界の解釈に何か誤りや漏れがあったことが発見できるだろう
現実世界を抽象化する過程に意味が伴うのはその通りで、視覚化手法も形式手法も同じ
形式手法にとっても抽象化の過程ではコトバの意味が大切なのに変わりはない
違うのは、抽象化の成果物である「仕様(設計書)の検証」において、視覚化手法では
(人間が介在する)直感を頼りとしており、そこではコトバの意味が重要な位置を占める
それに対して形式手法では仕様の検証に人の直感は介在せず、コトバの意味は無視する
ここで、証明(=形式を元にした検証)を人力でやろうが証明器で自動化しようが同じ
そして、もし証明が失敗すれば(仕様に矛盾を発見すれば)、現実世界の抽象化という前工程に立ち返る
その時には、(数学としての)形式化の単純ミスもあるだろうけど、コトバの意味(の定義)の過ち、
つまり(抽象化の過程で)現実世界の解釈に何か誤りや漏れがあったことが発見できるだろう
193デフォルトの名無しさん
2013/10/06(日) 23:45:46.18 >>188
>>形式に矛盾があれば誤りであると見なす
>それは当たり前。矛盾というのは形式的なものだからね。
いや、「非形式的な矛盾(=直感に基づく矛盾)」というのは存在する
たとえばOOの仕様で、ある箇所では「XはYのサブクラスである」と記述され、
別の箇所では「YはXのサブクラスである」と記述されていれば、それは矛盾だろう
ただし、サブクラスというオブジェクト間の関係は(人の)直感として定義されたものだから、
それは「形式的な矛盾」ではない
>>形式に矛盾があれば誤りであると見なす
>それは当たり前。矛盾というのは形式的なものだからね。
いや、「非形式的な矛盾(=直感に基づく矛盾)」というのは存在する
たとえばOOの仕様で、ある箇所では「XはYのサブクラスである」と記述され、
別の箇所では「YはXのサブクラスである」と記述されていれば、それは矛盾だろう
ただし、サブクラスというオブジェクト間の関係は(人の)直感として定義されたものだから、
それは「形式的な矛盾」ではない
194デフォルトの名無しさん
2013/10/06(日) 23:49:56.14 この会話が成立していないのに
話が流れていく感じはすごいな
形式手法に言及しているのに
詭弁(誤謬)ばかりってのが皮肉
話が流れていく感じはすごいな
形式手法に言及しているのに
詭弁(誤謬)ばかりってのが皮肉
195デフォルトの名無しさん
2013/10/07(月) 06:12:47.77 >>193
>「非形式的な矛盾(=直感に基づく矛盾)」というのは存在する
形式的に意味不明な言明だ。
論理的訓練が不十分のようだから指摘しておく。
>別の箇所では「YはXのサブクラスである」と記述されていれば、それは矛盾だろう
矛盾とはAかつ¬Aが帰結することだ。「XはYのサブクラスである」と
「YはXのサブクラスである」はまだ矛盾ではない。
>ただし、サブクラスというオブジェクト間の関係は(人の)直感として定義されたものだから、
そういう関係もまた形式的に記述するんだよ。
>>194
>形式手法に言及しているのに
>詭弁(誤謬)ばかりってのが皮肉
意味不明。間違いがあれば指摘すればよい。
形式手法=無謬ということではない。形式手法を偶像崇拝してる?
>「非形式的な矛盾(=直感に基づく矛盾)」というのは存在する
形式的に意味不明な言明だ。
論理的訓練が不十分のようだから指摘しておく。
>別の箇所では「YはXのサブクラスである」と記述されていれば、それは矛盾だろう
矛盾とはAかつ¬Aが帰結することだ。「XはYのサブクラスである」と
「YはXのサブクラスである」はまだ矛盾ではない。
>ただし、サブクラスというオブジェクト間の関係は(人の)直感として定義されたものだから、
そういう関係もまた形式的に記述するんだよ。
>>194
>形式手法に言及しているのに
>詭弁(誤謬)ばかりってのが皮肉
意味不明。間違いがあれば指摘すればよい。
形式手法=無謬ということではない。形式手法を偶像崇拝してる?
196デフォルトの名無しさん
2013/10/07(月) 08:17:29.48197デフォルトの名無しさん
2013/10/07(月) 08:39:38.60198197
2013/10/07(月) 08:43:06.72 研究会 -> 勉強会
199デフォルトの名無しさん
2013/10/07(月) 09:12:11.96200デフォルトの名無しさん
2013/10/07(月) 09:27:05.81 計算機の性能だな
20年前のCPUの性能ではSAT SMTソルバーをぶん回すとかありえんだろう
20年前のCPUの性能ではSAT SMTソルバーをぶん回すとかありえんだろう
201デフォルトの名無しさん
2013/10/07(月) 09:27:11.00202デフォルトの名無しさん
2013/10/07(月) 10:13:24.23 >>195
スマン、言葉が足りなかったようだ
>>193での「非形式的な矛盾」とは「(UMLのような)非形式手法における矛盾」のこと
そして非形式手法においても矛盾(という概念)は(人間的な)直感として存在していることを言いたかった
たとえそれが形式主義の視点では「意味不明な言明」であったとしても....
>>ただし、サブクラスというオブジェクト間の関係は(人の)直感として定義されたものだから、
>そういう関係もまた形式的に記述するんだよ。
形式手法であれば、構築しようとする体系(システム)におけるサブクラスという関係を
(形式的に)定義するのは当然のことだね
ここで、もしもサブクラスの(形式的な)定義に交換律を含めれば、
「XはYのサブクラスである」かつ「YはXのサブクラスである」(という仕様記述)は矛盾ではなくなる
つまり、(形式手法の)証明ではサブクラス(というコトバ)から人が連想する直感的な意味は無視される
たとえば、仮にサブクラス(というコトバ)の代わりに机や椅子(というコトバ)で仕様が記述されていても
(無矛盾であることを)証明できるのが形式手法であり、それが非形式手法との違いになる
スマン、言葉が足りなかったようだ
>>193での「非形式的な矛盾」とは「(UMLのような)非形式手法における矛盾」のこと
そして非形式手法においても矛盾(という概念)は(人間的な)直感として存在していることを言いたかった
たとえそれが形式主義の視点では「意味不明な言明」であったとしても....
>>ただし、サブクラスというオブジェクト間の関係は(人の)直感として定義されたものだから、
>そういう関係もまた形式的に記述するんだよ。
形式手法であれば、構築しようとする体系(システム)におけるサブクラスという関係を
(形式的に)定義するのは当然のことだね
ここで、もしもサブクラスの(形式的な)定義に交換律を含めれば、
「XはYのサブクラスである」かつ「YはXのサブクラスである」(という仕様記述)は矛盾ではなくなる
つまり、(形式手法の)証明ではサブクラス(というコトバ)から人が連想する直感的な意味は無視される
たとえば、仮にサブクラス(というコトバ)の代わりに机や椅子(というコトバ)で仕様が記述されていても
(無矛盾であることを)証明できるのが形式手法であり、それが非形式手法との違いになる
203デフォルトの名無しさん
2013/10/07(月) 12:14:52.74 >>202
>交換律を含めれば
細かいのだが、ここは、反対称律を含めなければ、だな
>つまり、(形式手法の)証明ではサブクラス(というコトバ)から人が連荘zする直感的な意味は無視されb
>たとえば、仮にサブクラス(というコトバ)の代わりに机や椅子(というコトバ)で仕様が記述されていても
>(無矛盾であることを)証明できるのが形式手法であり、それが非形式手法との違いになる
この辺り、ヒルベルト流の「形式主義」の説明なら妥当だが、ソフトウェア工学の「形式手法」の
説明としては相当ズレてると思う
>交換律を含めれば
細かいのだが、ここは、反対称律を含めなければ、だな
>つまり、(形式手法の)証明ではサブクラス(というコトバ)から人が連荘zする直感的な意味は無視されb
>たとえば、仮にサブクラス(というコトバ)の代わりに机や椅子(というコトバ)で仕様が記述されていても
>(無矛盾であることを)証明できるのが形式手法であり、それが非形式手法との違いになる
この辺り、ヒルベルト流の「形式主義」の説明なら妥当だが、ソフトウェア工学の「形式手法」の
説明としては相当ズレてると思う
204デフォルトの名無しさん
2013/10/07(月) 17:30:11.68 >>203
識別子の字面に引きずられるようなら、その時点で形式手法を使う意味は半減するよ。
形式仕様を読み書きする時には、字面が持つ自然言語的意味を無視して
あくまで記号操作の対象として扱う。
識別子の字面が大事になるのは、形式手法を知らない人に説明する時。
「形式的に」扱う訓練を受けていない人のために非形式的意味を使う。
非形式的な意味を持たせた時点で、その記述は形式仕様ではなくなる。
識別子の字面に引きずられるようなら、その時点で形式手法を使う意味は半減するよ。
形式仕様を読み書きする時には、字面が持つ自然言語的意味を無視して
あくまで記号操作の対象として扱う。
識別子の字面が大事になるのは、形式手法を知らない人に説明する時。
「形式的に」扱う訓練を受けていない人のために非形式的意味を使う。
非形式的な意味を持たせた時点で、その記述は形式仕様ではなくなる。
205デフォルトの名無しさん
2013/10/07(月) 20:32:26.92 pi = 3.14159
e = 2.71828
と
e = 3.14159
pi = 2.71828
で「後者に違和感を持つのは間違い」という奴の
形式仕様は読みたくないな
形式仕様からプログラムコードを自動生成してメンテナンスフリーというならともかく
それがソフトウェアなり何なりの「仕様」を定めている以上
非形式的な意味は持たせてもいいし
それによって非形式的仕様になる訳じゃない
非形式的な意味は形式的検証の結果に影響を与えないのだから
e = 2.71828
と
e = 3.14159
pi = 2.71828
で「後者に違和感を持つのは間違い」という奴の
形式仕様は読みたくないな
形式仕様からプログラムコードを自動生成してメンテナンスフリーというならともかく
それがソフトウェアなり何なりの「仕様」を定めている以上
非形式的な意味は持たせてもいいし
それによって非形式的仕様になる訳じゃない
非形式的な意味は形式的検証の結果に影響を与えないのだから
206デフォルトの名無しさん
2013/10/07(月) 20:40:11.24 >>205
>形式仕様を読み書きする時には、字面が持つ自然言語的意味を無視して
>あくまで記号操作の対象として扱う。
そんなことをは君(人間)は気にする必要はないのだ。
放っておいても証明器は完璧にそうしてくれる。
同じことを君(人間)がやってもそれこそ効果は半減する。
書くことは人間にしかできないのだが,そのとき「記号」で書いていては,
そもそもどういう対象を書いているかが分からないだろう?w
>「形式的に」扱う訓練を受けていない人のために非形式的意味を使う。
訓練を受けているとかいないとかでなく、どんな相手だろうと、何を書いて
いるかを伝えるためには、単なる記号では伝わらないんだよ。
>非形式的な意味を持たせた時点で、その記述は形式仕様ではなくなる。
これも違う。人間がどういう読み方をしようと、machine readableであれば
形式仕様なんだよ。
あと、君が「形式手法を知らない人」「訓練を受けていない人」とよく
言ってるらしいのが気になるな。
>形式仕様を読み書きする時には、字面が持つ自然言語的意味を無視して
>あくまで記号操作の対象として扱う。
そんなことをは君(人間)は気にする必要はないのだ。
放っておいても証明器は完璧にそうしてくれる。
同じことを君(人間)がやってもそれこそ効果は半減する。
書くことは人間にしかできないのだが,そのとき「記号」で書いていては,
そもそもどういう対象を書いているかが分からないだろう?w
>「形式的に」扱う訓練を受けていない人のために非形式的意味を使う。
訓練を受けているとかいないとかでなく、どんな相手だろうと、何を書いて
いるかを伝えるためには、単なる記号では伝わらないんだよ。
>非形式的な意味を持たせた時点で、その記述は形式仕様ではなくなる。
これも違う。人間がどういう読み方をしようと、machine readableであれば
形式仕様なんだよ。
あと、君が「形式手法を知らない人」「訓練を受けていない人」とよく
言ってるらしいのが気になるな。
208デフォルトの名無しさん
2013/10/08(火) 02:10:26.26 ここで思いのたけを質問したらどうですか?
http://topse.or.jp/2013/10/2023
http://topse.or.jp/2013/10/2023
209デフォルトの名無しさん
2013/10/08(火) 17:34:58.34210デフォルトの名無しさん
2013/10/08(火) 17:39:04.75211デフォルトの名無しさん
2013/10/08(火) 17:41:09.34212デフォルトの名無しさん
2013/10/08(火) 18:46:34.06 エラーや例外が発生しないプログラムが必ずしも「正しい」訳じゃないように
形式的に無矛盾な仕様が必ずしも「正しい」訳じゃない
無矛盾な証券決済システムの仕様は
鉄道運行管理システムの仕様としては全くもって正しくない
記号を記号として扱うのは機械でもできるし機械の方が得意だ
しかし形式意味論では扱わない記号に込められた「意味」を読み取るのは
現状では人間にしかできない
機械が得意なことは機械に任せて
人間は人間にしかできないことに力を入れる方が得策だろう
形式的に無矛盾な仕様が必ずしも「正しい」訳じゃない
無矛盾な証券決済システムの仕様は
鉄道運行管理システムの仕様としては全くもって正しくない
記号を記号として扱うのは機械でもできるし機械の方が得意だ
しかし形式意味論では扱わない記号に込められた「意味」を読み取るのは
現状では人間にしかできない
機械が得意なことは機械に任せて
人間は人間にしかできないことに力を入れる方が得策だろう
213デフォルトの名無しさん
2013/10/08(火) 19:41:41.07 >>212
なら自然言語とか図形言語で仕様書いてれば?
なら自然言語とか図形言語で仕様書いてれば?
214デフォルトの名無しさん
2013/10/08(火) 19:51:16.96 機械が形式仕様を書いてくれるようになったら
やってもいいかもね
やってもいいかもね
215デフォルトの名無しさん
2013/10/08(火) 20:22:13.24216デフォルトの名無しさん
2013/10/08(火) 20:40:26.34■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 青銅聖闘士のパンチは音速←わかる 白銀聖闘士はその数倍←まぁわかる 黄金聖闘士は光速←は?
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
- さわやかって
- 生活保護を受けている私だけど、おはようございます。
- 【朗報】ローソン「Мサイズのカップを購入してLサイズのコーヒーを入れてくださいね」 [455031798]
