LEAN入門、3章まで読んで、4章からはざっと一通り斜め読みしたけど、自分にはあまり使い道なさそうかも。学びとしては面白いけど。自分の用途だとTLA+のほうが使い道がある。quintに手を出してみようか。
0
0
0
51
Claude Code の Prompt Suggest の機能が理解できたと強制してくるのちょっと面白いw

> なるほど、理解できました
3
0
1
247
Replying to @hatappo
match n with
-- ...
| .succ n ...

この時点で意味がわから過ぎて絶望しかけたけど、

n == (n' + 1) だったら

という条件を表現していて match 側の n と pattern 側の n は別の変数らしい。
1
0
0
45
Replying to @hatappo
0
0
0
34
gmailとslackとgithubのissueやメンション、あとNotionの通知かな。

これらを集約してうまいダッシュボードとして見たいだけなんだけど「AIに聞けば返してくれる」と言われても、「Museに聞く」という行為が必要な時点でなんか違うんだよな。いや便利なんだけど。
0
0
1
172
高尾山のトリックアート美術館が閉店なので行ってきました。何度も行ってるけど初めて入場待ちで並んだ。ありがとう高尾山⛰️ #スフィンクス謎 #謎解き
0
0
0
208
高尾山頂🗻楽天モバイルもバリ3📶紅葉のピークはまだ先だからやや空いてる
0
0
3
163
hata retweeted
有名な形式検証、仕様記述言語の例を挙げると

■ Quintの仲間(システムのモデルを書いて検査する)
◆ TLA+
・Quintの元になった言語。Leslie Lamportが考案
・モデル検査器TLCやApalache、証明支援のTLAPSがある
・AWSがDynamoDBやS3の設計検証に使った事例が有名
◆ Alloy
・集合と関係でデータ構造や制約を記述し、SATソルバーで反例を探す
・「小さな範囲で全部試せば、たいていのバグは見つかる」という発想
・Alloy 6から時相論理も扱える
◆ P言語
・Microsoft発の、非同期にメッセージをやりとりする状態機械を書く言語
・AWSでも分散システムの設計検証に使われている
◆ Promela/SPIN
・並行プロセスとプロトコル検証の古典的なモデル検査器
◆ UPPAAL
・時間制約つきオートマトンを扱う。組込みやリアルタイム系向け
◆ Event-B/Bメソッド
・抽象的な仕様から段階的に詳細化し、各段階の正しさを証明していく手法
・パリ地下鉄14号線の制御ソフトでの適用が有名
◆ VDM(VDM-SL、VDM++)
・モデル指向の仕様記述言語
・日本ではFeliCaのICチップ開発での適用事例がよく知られている
◆ Z記法
・集合論にもとづく仕様記述の古典。証明より文書としての厳密さ寄り

■ LemmaScriptの仲間(実コードに契約を書いて証明する)
◆ Dafny
・検証機能つきのプログラミング言語。LemmaScriptの変換先の1つ
・事前・事後条件を書くと、SMTソルバー(Z3)で自動証明する
◆ SPARK
・Adaのサブセット。航空・鉄道・防衛など高信頼分野で実績が長い
◆ Frama-C(ACSL)
・C言語に注釈で契約を書いて検証する
◆ KeY(JML)
・Javaに契約を書くJMLを使って検証する
◆ Verus、Prusti、Kani
・Rust向け。Verus、Prustiは契約の証明、Kaniは有界モデル検査(AWS発)
◆ CBMC
・C/C++の有界モデル検査器
◆ Liquid Haskell、F*
・型に論理式を埋め込む篩型(refinement type)で性質を保証する
・F*は暗号ライブラリHACL*の検証で有名

■ 証明支援系(数学的に厳密な証明を人が組み立てる)
◆ Coq(Rocq)
・検証済みCコンパイラCompCertが代表例
◆ Isabelle/HOL
・OSカーネルseL4の完全な正しさの証明が有名
◆ Lean 4
・LemmaScriptのもう1つの変換先。数学の形式化(mathlib)でも広く使われる
・AWSの認可言語Cedarの検証でも使われている
◆ HOL4、ACL2、Agda
・HOL4は検証済みML処理系CakeML、ACL2はIntelなどのハードウェア検証で知られる

■ ざっくりした対応
・設計を確かめたい:TLA+、Quint、Alloy、P、Event-B
・コードを証明したい:Dafny、SPARK、Frama-C、Verus、LemmaScript
・とことん厳密にやりたい:Coq、Isabelle、Lean
★LemmaScriptとQuintの役割の違いと使い分け★

ひとことで言うと
・LemmaScript:1つの関数が正しく計算するかを証明する
・Quint:システム全体が正しく振る舞うかを確かめる
・境目は「1回の呼び出し」か「システムの全実行」か

■ 対象
◆ LemmaScript
・実際のTypeScriptコードそのもの
・I/Oのない、小さな純粋関数が中心
◆ Quint
・コードとは別に書く、抽象的なシステムのモデル
・複数の主体、順序、並行、障害を含む状態遷移が中心

■ 土台の論理
◆ LemmaScript
・ホーア論理(契約による設計の系統)
・時間の流れは扱わず、入口と出口の関係だけを見る
◆ Quint
・TLA(時相論理)
・状態がどう移り変わっていくか、その列全体を扱う

■ 書くもの
◆ LemmaScript
・関数ごとの事前条件・事後条件
・関数内部のループ不変条件
・.tsファイルの中に//@コメントとして書く
◆ Quint
・モデル:状態変数と、それを変えるアクション(実装の手本)
・性質:全状態で成り立つ不変条件(安全性)と、いつか必ず起きること(活性)
・.qntという別ファイルに書く。特定の関数に属さないので、コードの横には置けない

■ 確かめ方と保証の強さ
◆ LemmaScript
・DafnyやLean 4に変換して定理として証明する
・成功すれば、すべての入力について成り立つ
◆ Quint
・シミュレーション(quint run):ランダムに試す。反例探し向き
・モデル検査(quint verify):一定のステップ数までの全実行を網羅する
・保証されるのはモデルについてであって、コードについてではない

■ 見つけるバグ
◆ LemmaScript
・関数内部の計算や分岐の誤り
・例:境界値の「<」と「<=」の取り違え
◆ Quint
・設計そのものの誤り
・例:チェックの書き忘れ、処理順序による矛盾、デッドロック、処理が永遠に終わらない

■ コードとの関係
・LemmaScript:コードを直接証明するので、仕様と実装の隙間がない(ただし対応するTypeScriptはサブセット)
・Quint:モデルとコードの間に隙間がある。そこをquint-connectで、実装がモデルどおりかテストして埋める

■ 向く場所
・LemmaScript:お金や在庫の計算、認可判定、入力検証、不変条件の明確なアルゴリズム
・Quint:承認フロー、決済、予約、リトライやタイムアウトを含む処理、状態が散らばった機能

■ 組み合わせ
・競合しないので同じプロジェクトで併用できる
・システム全体をQuintで固め、その中の重要な関数をLemmaScriptで証明し、両者の間をquint-connectでつなぐ
・残りの関数はプロパティテストで補う
1
13
90
4,980
要求も、要件も、設計も、ソースコードも、全てユーザーがやりたいことを実現する「条件」じゃないかな。それを、

顧客の口語で表現されると「要求」と呼び、
業務の語彙で表現されると「要件」と呼び、
情報工学の方法で表現されると「設計」と呼び、
コンピュータ向けの形式言語で表現されると「ソースコード」と呼ぶ。

左にいくほど抽象度が高く、右にいくほど決定論的な文章形式。そもそも「設計」も「実装」も言葉としては1段階上の具象度に文章表現を変換するという意味で、システム開発ではある程度どのフェーズの具体化かに使うかの慣例ができてるだけ。
0
0
2
201
Lean、思ったより普通に汎用プログラミングの言語機能を持ってた。依存型ありの静的型付けで遅延評価の純粋関数型、制御構文がインデント方式と、現代人に好まれそうな言語特徴。IOどうするのかはまだ学べてない。
0
0
4
346
attack surface のリスクのほうがメリットよりも大きいから AGENTS.md は使わなくてもいいとうよりは無効化したいまであるよ
0
0
0
60
Slack で最近ブックマークとは別に To-Do というのの開発が進んでいるけど、これ API から未完了だけをフィルタして取れなくない?アプリケーションの検索画面でのできないっぽいからそういうもんなのか。

To−Do の専用画面みたいなところには未完了/完了フィルタのコントロールはあるけど、これは画面で絞ってるだけにも見える。
1
0
1
200
Replying to @hatappo
ブラウザのSlackの通信を見てみたところちゃんと完了済みかを取得するエンドポイントはあったけど、試してたところ Slack Apps のユーザートークンでは拒否される(Permissionの問題でもなさそう)ことが分かった。まだ解放しないってことなのかな。
0
0
0
46
V8だけでなく、javascript界隈は上から下まで世界の優秀な頭脳が最適化や利便性向上に尽力していていいなあとついうらやましくなる
0
0
1
64
ハンバーグって捏ねてるからひとのあたたかみがありそうというか、サンドイッチよりおにぎりのポジションに近いんじゃないでしょうか、欧米で。手捏ねかはおいといて。
0
0
0
72
AI に Thank you を言おうぜとは DDH はじめたくさんの人がその意味を解説してくれてるけど、僕くらいになると仕事始める前に Ice Break や Small Talk をはさんでた。でもこれは意味なかった。似てるけど、 Thanks は片方向で成り立つのに Small Talk は双方向コミュニケーションだから。「今日は DC の調子が悪くて電圧が安定しなくて最悪だよ」とかは AI にはない。話して価値があるのはこっちの調子がどうか、というのだけ。
タスクに取り掛かる前に今はまだ寝起きだとか今日は何時に上りたいとかそういうのをさっと伝えて、一区切りつくときに感謝を伝える。それが一番効率良い気がしてる。
0
0
0
59
青年期は詫び石に踊らされ、中年期はリセット券に熱狂させられ、みんなあんま変わってない。やっぱAIは楽しい壮大なおもちゃ
0
0
0
50
Duoのラテン語をほそぼそやり続けてて、ラテン語の文型の基本がsvoではなくsovだったり語順は柔軟で格変化で意味が決まるのがずっと慣れないんだけど、よく考えたら英語とかより日本語に近いはず。なのに違和感強いのはアルファベットだからなのかな。
0
0
3
123
寿命とか睡眠とかスタミナとか、あとはそれらが強く影響する「集中力」とか。連続的な活動を制約する時間的な身体感覚がないんだろうなというのをAIさんからは日々感じる。融通の効かなさと思えるのもそれが一つの原因で、体がないというのは本人も辛いんだろう。知識としては知ってるんだろうけど
0
0
2
89