PPL 2020: 第22回プログラミングおよびプログラミング言語ワークショップ
PROGRAM FOR WEDNESDAY, MARCH 4TH
Days:
previous day
all days

View: session overviewtalk overview

09:00-10:10 Session 14: プログラム検証
Chair:
Sosuke Moriguchi (Tokyo Institute of Technology, Japan)
09:00
Hiromasa Saito (Kyoto University, Japan)
Yuki Nishida (Kyoto University, Japan)
Atsushi Igarashi (Kyoto University, Japan)
Kohei Suenaga (Kyoto University, Japan)
[C1] スマートコントラクトのための Effectively Callback-Free 性の型に基づく静的検証
PRESENTER: Hiromasa Saito

ABSTRACT. スマートコントラクトは、暗号通貨のプラットフォーム上で実行される、ブロックチェーンを操作するためのプログラムである。スマートコントラクトに対する典型的な攻撃として、コード中のコールバックを悪用して資産を盗み出す手法が知られており、実際にEthereumにおけるThe DAO Attackと呼ばれる事件ではこの攻撃によって150万米ドル相当の暗号通貨が盗まれた。Grossmanらはこのような攻撃に対するスマートコントラクトの安全性の基準として実行トレースのeffectively callback-free (ECF)性という概念を提唱した。本研究では、スマートコントラクトの任意の実行トレースがECF性を満たすことを静的に検証するための型システムを提案し、その健全性を証明する。この型システムは、ECF性がブロックチェーンへの読み書きと他のアカウントの呼出命令の順序を使って定義されていることを利用して、これらの操作が起こる順序をエフェクトを用いて健全に見積もる。

09:25
聡太 佐藤 (京都大学, Japan)
淳 古瀬 (ダイラムダ株式会社, Japan)
幸平 末永 (京都大学, Japan)
淳 五十嵐 (京都大学, Japan)
[C1] F*を用いたMerkle Patricia Treeライブラリの形式検証
PRESENTER: 聡太 佐藤

ABSTRACT. Merkle Patricia Treeは, TezosやEthereum等の仮想通貨基盤で用いられているストレージのためのデータ構造である. Plebeiaは, Tezosの次世代ストレージとして実装が進められている, OCamlで書かれたMerkle Patricia Treeライブラリである. 本研究では, Plebeiaの一部を, 形式検証のためのプログラミング言語であるF*を用いて検証した. 具体的には, Merkle Patricia Treeの様々な不変条件がPlebeiaライブラリ内で保たれていることを検証し, F*から抽出したOCamlコードと元のソースコードを組み合わせてライブラリが動作することを確認した. F*の文法にはOCamlと共通する点が多いため, 元のソースコードをほぼ再利用してF*に移植できた. 更に, 検証の過程で, ランダムテストでは見逃されていてたPlebeiaのバグを発見することに成功した.

09:50
祐介 松下 (The University of Tokyo, Japan)
武志 塚田 (The University of Tokyo, Japan)
直樹 小林 (The University of Tokyo, Japan)
[C2] RustHorn: CHC-based Verification for Rust Programs
PRESENTER: 祐介 松下

ABSTRACT. Reduction to the satisfiablility problem for constrained Horn clauses (CHCs) is a widely studied approach to automated program verification. The current CHC-based methods, however, do not scale very well for programs using pointers. This paper proposes a novel translation of pointer-manipulating Rust programs into CHCs, which clears away pointers and heaps by exploiting Rust's ownership system. We formalize the translation for a simplified core of Rust and prove its soundness and completeness. We have implemented a prototype verifier for a subset of Rust and confirmed the effectiveness of our method.

10:25-11:05 Session 15: 構文解析
Chair:
Kota Mizushima (OPT, Inc, Japan)
10:25
Isao Sasano (Department of Computer Science and Engineering, Shibaura Institute of Technology, Japan)
[C2] An approach to generate text-based IDEs for syntax completion based on syntax specification

ABSTRACT. The integrated development environments provide several types of functionalities. Herein, we intend to generate a syntax completion functionality from the grammar of the target language as long as the sentences of the language can be analyzed via LR parsing. We specify the syntax candidates to be completed based on the sentential forms and reductions in LR parsing. Furthermore, we implement a prototype system for computing the syntax candidates to be completed at the cursor position in the source code written in a small subset of Standard ML; the system only uses the program text up to the cursor position to ensure simplicity. This work was presented at ACM SIGPLAN 2020 Workshop on Partial Evaluation and Program Manipulation (PEPM 2020).

10:45
Nariyoshi Chida (NTT, Japan)
Yuhei Kawakoya (NTT, Japan)
Dai Ikarashi (NTT, Japan)
Kenji Takahashi (NTT, United States)
Koushik Sen (University of California, Berkeley, United States)
[C2] Is Stateful Packrat Parsing Really Linear in Practice? -- A Counter-Example, an Improved Grammar, and Its Parsing Algorithms --
PRESENTER: Nariyoshi Chida

ABSTRACT. 本論文はACM SIGPLAN 2020 International Conference on Compiler Constructionに採択された論文です。 ACM Digital Libraryに掲載予定です。 2020年2月22-23日にアメリカ、サンディエゴで発表されます。

---

Stateful packrat parsing is an algorithm for parsing syntaxes that have context-sensitive features. It is a well-known knowledge among researchers that the running time of stateful packrat parsing is linear for real-world grammars, as demonstrated in existing studies. However, we have found the cases in real-world grammars and tools that lead its running time becomes exponential.

This paper proposes a new grammar, parsing expression grammar with variable bindings, and two parsing algorithms for the grammar, stateful packrat parsing with selected global states and stateful packrat parsing with conditional memoization. Our proposal overcomes the exponential behavior that appears in parsers and guarantees polynomial running time. The key idea behind our algorithms is to memoize the information relevant to the use of the global states in order to avoid memoizing the full global states. We implemented our algorithms as a parser generator and evaluated them on real-world grammars. Our evaluation shows that our algorithms significantly outperform an existing stateful packrat parsing algorithm in terms of both running time and space consumption. In particular, stateful packrat parsing with conditional memoization improves the running time and space consumption for malicious inputs that lead to exponential behavior with the existing algorithm by 260x and 217x, respectively, compared to the existing algorithm.

11:20-12:30 Session 16: 言語設計
Chair:
Soichiro Hidaka (Hosei University, Japan)
11:20
陽彦 横山 (東京工業大学, Japan)
草介 森口 (東京工業大学, Japan)
卓雄 渡部 (東京工業大学, Japan)
[C1] 小規模組込みシステム向けFRP言語に対する再帰的データ型の導入
PRESENTER: 陽彦 横山

ABSTRACT. 関数リアクティブプログラミング(FRP)言語Emfrpに対する再帰的なデータ型の導入手法を提案する.Emfrpはマイクロコントローラのような小規模システム向けに設計された純粋FRP言語である.この言語では,関数やデータ型の再帰的な定義を禁止する等の言語的制約を課すことで,時変値の更新処理が停止することや実行時に必要なメモリサイズを静的に決定できることが保証される.本研究では型に対してサイズの情報を含めることで,Emfrpの性質を維持しつつこの制約を緩和する手法を提案する.

11:45
君郎 倉光 (日本女子大学, Japan)
[C1] Puppy: 高校生向けの簡易 Python の設計と実装

ABSTRACT. Puppy は、高校生や大学初学者を対象とした新しい入門プログラミング環境で ある。Puppy の特徴は、抽象的なプログラム動作の直感的な理解を促進するため、Web ブラウザ上の物理シミュレーションを用いて可視化する点である。もう1つの特徴は、 Python 言語を学びやすく簡略化した Puppy 言語を独自に設計した点である。本稿で は、後者の特徴に主に焦点をあて、高校生向けのプログラミングに求められる言語機能 を提起し、教育言語のデザイン選択を議論する。

12:10
Masahiro Yasugi (Kyushu Institute of Technology, Japan)
Daisuke Muraoka (Kyushu Institute of Technology (Presently with SmartNews, Inc.), Japan)
Tasuku Hiraishi (Kyoto University, Japan)
Seiji Umatani (Kanagawa University, Japan)
Kento Emoto (Kyushu Institute of Technology, Japan)
[C2] HOPE: A Parallel Execution Model Based on Hierarchical Omission
PRESENTER: Masahiro Yasugi

ABSTRACT. This paper presents a new approach to fault-tolerant language systems without a single point of failure for irregular parallel applications. Work-stealing frameworks provide good load balancing for many parallel applications, including irregular ones written in a divide-and-conquer style. However, work-stealing frameworks with fault-tolerant features such as checkpointing do not always work well. This paper proposes a completely opposite ``work omission'' paradigm and its more detailed concept as a ``hierarchical omission''-based parallel execution model called HOPE. HOPE programmers' task is to specify which regions in imperative code can be executed in sequential but arbitrary order and how their partial results can be accessed. HOPE workers spawn no tasks/threads at all; rather, every worker has the entire work of the program with its own planned execution order, and then the workers and the underlying message mediation systems automatically exchange partial results to omit hierarchical subcomputations. Even with fault tolerance, the HOPE framework provides parallel speedups for many parallel applications, including irregular ones.

出典: 48th International Conference on Parallel Processing (ICPP 2019). August, 2019. https://doi.org/10.1145/3337821.3337899 掲載済