
2026/09/09 0:56
C*:プログラミングと検証を統合した C
RSS: https://news.ycombinator.com/rss
要約▶
日本語翻訳:
この研究の主なメッセージは、C* と呼ばれる革新的なプログラミング言語の提案であり、これはソフトウェアの実装と形式的検証を単一の環境内で統合するものです。これら従来別々のプロセスを統合することで、標準的なコーディングと厳密な証明タスク間の断絶による高開発コストを直接解決します。プログラマーがパラダイムの対立により自身のコードの検証を回避する従来のアプローチとは異なり、C* は記号的実行エンジンと LCF 風の証明核を活用し、証明コードブロックを実生源内に埋め込みます。このアーキテクチャは、ユーザーがコードを書く際に証明状態をインタラクティブに更新しながらリアルタイムでの検証を可能にします。
言語のプロトタイプであるバージョン [v1] は、2025 年 4 月 3 日に提出され、成功裏に開発されました。システムは高い拡張性を備え、論理的な定義のための再利用可能なライブラリや複雑な推論シナリオを効果的に処理するためにプログラム可能自動化に対応します。評価については、C* は小規模な C プログラムの代表的なベンチマークと、pKVM の buddy アロケータの attach 関数に関する困難な実世界ケーススタディにおいてテストされ、これらにより C プログラミングの広範な一部イディオムを検証し、実世界のシナリオにおける複雑な推論タスクを処理する能力が示されました。将来を見据けて、開発者たちは C* が将来的にさらに広範な標準 C のイディオムに対応することを期待しています。究極的には、この革新は企業にとって保守コストを大幅に低下させると同時に、C を実装コードと証明コードの開発の共通言語として信頼性の高いソフトウェア構築のための堅牢で統合されたエコシステムを業界全体に提供する約束を果たします。
本文
システムソフトウェア検証のための証明統合型言語「C*」の提案
背景と課題
システムソフトウェアには高い安全性が求められ、かつ低レベルな性質を持つため、その正しい動作を保証することは形式検証の研究および応用上で主要な焦点となっている。しかし、現状では以下の問題が存在する。
- 検証ツールの進化に対する開発者の関与不足: 従来の開発者は自身のコード検証にほとんど参加していない。
- コストの高騰: その結果、検証済みソフトウェアの開発・保守コストが大幅に高まっている。
- 環境とパラダイムの断絶: プログラミング環境と検証環境の間に隔たりがあることが、プログラマーの検証実践への参加に対する主要な障壁である。
- この断絶は利用可能性およびリアルタイム検証を制限する要因となっている。
提案:C*言語
これらの課題を解決するため、C プログラミング向けの証明統合型言語「C*」が提案される。
C*のアーキテクチャ
C* は以下の技術スタックに支えられており、C の文法を拡張して検証機能を付与する設計になっている。
- 符号実行エンジン: システムの基盤として採用。
- LCF 方式の証明カーネル: 論理的な正当性を保証するための核となるコンポーネント。
C*の主な特徴
C* は実装コードと証明コードを統合する設計となっており、以下のような機能を備えている。
- 埋め込み型の証明コード: プログラマーは実装コードの隣接位置に証明コードブロックを埋め込むことが可能。
- リアルタイム検証の実現: 現在の証明状態へのインタラクティブな更新により、検証プロセスを即座に進められる。
- 拡張可能なライブラリエコシステム: 表現力が豊かであり、以下のリソースの構築・再利用が可能。
- 論理定義
- 定理
- プログラム可能な証明自動化ツール
C の利点
極めて重要な点として、C* はC を共通言語として用いることで、実装コードと証明コードの開発を統合化している。これにより、C コーダーでも形式検証技術を容易に適用できる。
評価結果
著者らは C* のプロトタイプを実装し、以下のベンチマークを用いて評価を行った。
- 小規模な C プログラム: 代表的なベンチマークケース。
- 実際の応用例: pKVM のバディ・アロケータにおける
関数。attach
得られた結論
評価結果から、C* は以下を示していることが確認された。
- 広範な C プログラミング慣用句の検証サポート。
- 現実的なシナリオにおける複雑な推論タスクの効果的処理。
提出情報
- 送信元: 曹依源 [メールを見る]
- [v1]: 2025 年 4 月 3 日(木)03:22:22 UTC (414 KB)