Intent 意図
目的、入出力、事前・事後条件、不変条件、権限、未確定事項。AIの推測と人間が承認した要求を区別します。
AIが構築する。
人間が理解し、検証し、承認する。
プログラムを書くことを目的にしない。
意図を明確にし、実装を任せ、その正しさを根拠とともに確かめる。
AIファーストの次世代プログラミング言語構想。
AIにとって便利なのは、大量に書ける言語ではなく、間違いを減らせる言語だ。
「正しそうなコードが動いた」だけで終わらせない。何を望んだのか。何が実装されたのか。何を根拠に正しいと判断できるのか。その3つを、最初から結びつけます。
Zは、従来の「実装」を唯一の中心に置きません。意図・実装・根拠をそれぞれ独立して管理し、機械が結び付きを検査できることを目指します。
目的、入出力、事前・事後条件、不変条件、権限、未確定事項。AIの推測と人間が承認した要求を区別します。
AIが生成する、型付きで機械実行可能な処理。内部表現を原本にし、ソースコードは表示方法の一つにします。
テスト、静的解析、形式的証明、レビュー結果。何を、どの条件で確認できたのかを区別して保持します。
実装方式が変わっても、守るべき基準は変わらない。Zの最初の憲章から。
AIによる構築と、人間による理解・判断・承認の両立を目指す。
AIによる仮定を、承認済みの仕様として扱わない。
AIの自己申告を証拠とせず、機械的な検証結果を分離する。
未確定・未検証・矛盾・失敗を、成功と混同しない。
通信、データ更新、削除、決済などの作用を宣言する。
行単位の差分だけでなく、仕様・影響・リスクの差を示す。
Zの意味と検証規則は独立し、実行基盤は交換できるようにする。
独自のZIR(Z Intermediate Representation)を言語の核に据え、検証器と人間向けInspectorを通して実行へ進みます。
目的、制約、仮定、未決事項を構造化してZIR草案を作成。
型、契約、副作用、依存関係、証拠を独立に検査。
人間が理解すべき影響・危険・不明点・根拠を提示。
最小インタプリタから開始し、Wasm / LLVM等へ段階的に拡張。
同じ会員割引機能を、実装・検証根拠・人間用レビューという異なる視点から表示するイメージです。
実装が長大になっても、未決事項や副作用、検証状況を中心に確認できることを目指します。
テストに合格したことと、すべての入力で正しいことの数学的証明は別です。Zではその違いを表示します。
// conceptual syntax — not executable
rule member_price(
price: Int,
is_member: Bool
) -> Int {
requires price >= 0
ensures result >= 0
ensures result <= price
effects none
if is_member {
return price - floor(price * 10 / 100)
}
return price
}最初のベースラインは機能要求32件、非機能要求10件。ここでは重要な要求を抜粋して表示します。
進捗は「構想」「設計」「実装」「検証」を区別します。ロードマップの達成状況を事実以上に見せることはしません。
憲章、要求仕様、初期設計、ZIRサンプル。最初の設計資料を公開。
ZIRスキーマ、型検査、正規化、純粋関数インタプリタ。
契約検査、テスト、失敗・不明・未実行の証拠管理。
人間向け検証ビュー、差分説明、AIによる作成支援。
副作用と承認の仕組み、バックエンド統合、適合試験。
まだ動きません。現在はv0.1の設計構想と要求仕様を公開した段階です。最初に、ZIRスキーマ、独立検証器、純粋関数インタプリタを実装します。
実装作業の多くをAIへ移し、人間が要求の決定・判断・検証を担える未来を目指しています。ただし専門的な監査や設計・安全性の責任まで消えると主張するものではありません。
保証されません。テスト、形式的証明、レビュー、実環境での観測は異なる種類の根拠です。Zはそれらを区別して管理し、保証できない部分を明示することを目指します。
Intent(意図)とEvidence(検証根拠)を、既存言語への後付けの注釈ではなく、言語の第一級要素にするためです。実行系には既存技術を活用し、必要な部分のみ独自に設計します。
はい。形式手法の分野には既存の仕様記述言語「Z notation」があります。このプロジェクトのZは別の構想です。名称の混同や商標の調査は今後の課題です。
リポジトリは公開されていますが、現時点でライセンスは未決定です。公開は無条件の再利用許諾を意味しません。貢献方針とOSSライセンスは今後定める予定です。
完成品ではありません。だからこそ、設計への異論や提案に価値があります。