2022年4月 – 現在: 助手
早稲田大学 基幹理工学部 情報理工学科(2022年度のみ情報通信学科)
English Version Available Here
コンピュータサイエンスに関係のあることもないことも、色々興味をもって取り組んでいます。
早稲田大学 基幹理工学部 情報理工学科(2022年度のみ情報通信学科)
早稲田大学 基幹理工学研究科 情報理工・情報通信専攻
指導教員: 上田 和紀 教授
早稲田大学 基幹理工学研究科 情報理工・情報通信専攻
指導教員: 上田 和紀 教授
早稲田大学 基幹理工学部 情報理工学科
平均GPA: 3.57 / 4.00
基幹理工学部長賞 優秀賞 (2019年3月)
リストや二分木といった単純な(代数的な)データ構造より複雑なグラフ構造を対象とする書換え規則の型安全性を保証することを目標としています。 これらのデータ構造は、関数型言語等で用いられる古典的な型システムでは型付けできないことが知られています。
グラフ書換えにおいては、精緻な議論が求められる場面が多々あります。 特に、上記のようなグラフの型に関する議論や、構造合同関係とグラフ同型に関する議論は注意深く行われるべきでしょう。 ゆえに、証明支援系Coq上においてグラフ書換え言語の構文・意味論・性質を記述し、それらの証明を与えることを研究目標としています。
ラムダ計算は関数型言語の基盤としてとてもよく知られています。 しかし、依然として誰も網羅的な調査をし尽くしたと言えないような研究領域が残されています。 例えば、ラムダ式の(ハイパー)グラフ表現や、簡約グラフの可視化などは、この好例と言えましょう。
各タイトルをクリックすると概要(と有る場合はPDF/DOIへのリンク)を展開します。
The ability to handle evolving graph structures is important both
for programming languages and modeling languages. Of various
languages that adopt graphs as primary data structures, a graph
rewriting language LMNtal provides features and applications of
both (concurrent) programming languages and modeling languages,
and its implementation unifies ordinary program execution and
model checking functionalities. Unlike pointer manipulation in
imperative languages, LMNtal allows us to manipulate graph
structures in such a way that the well-formedness of graphs is an
invariant guaranteed by the language itself. However, since the
shapes of graphs can be more complex and diverse than algebraic
data structures such as lists and trees, it is important but not
obvious to formulate types of graphs to verify individual
programs. With this motivation, this paper discusses LMNtal
ShapeType, a type checking method for rewrite rules that applies
the basic idea of Structured Gamma to a concrete graph rewriting
language. In this method, since types are defined as generative
grammars written as LMNtal rules, type checking of LMNtal programs
can be done by exploiting model checking features of LMNtal
itself. We also gave a full implementation of type checking using
the features of the LMNtal meta-interpreter.
PDF:
Preproceedings
or Our copy
The ability to handle evolving graph structures is important both
for programming languages and modeling languages. Of various
languages that adopt graphs as primary data structures, a graph
rewriting language LMNtal provides features of both (concurrent)
programming languages and modeling languages, and its
implementation unifies ordinary program execution and model
checking functionalities. Unlike pointer manipulation in
imperative languages, LMNtal allows us to manipulate graph
structures in such a way that the well-formedness of graphs is
guaranteed by the language itself. However, since the shapes of
graphs can be complex and diverse compared to algebraic data
structures such as lists and trees, it is a non-obvious important
task to formulate types of graphs to verify individual programs.
With this motivation, this paper discusses LMNtal ShapeType, a
type checking framework that applies the basic idea of Structured
Gamma to a concrete graph rewriting language. Types are defined by
generative grammars written as LMNtal rules, and type checking of
LMNtal programs can accordingly be done by exploiting the model
checking features of LMNtal itself. We gave a full implementation
of type checking exploiting the features of the LMNtal
meta-interpreter and confirmed that it works for practical
operations on various graph structures, including single-step and
multi-step operations on non-algebraic data structures and data
structures with numerical shape constraints.
DOI:
10.1109/ACCESS.2022.3217913
Graphs are a generalized concept that encompasses more complex
data structures than trees, such as difference lists,
doubly-linked lists, skip lists, and leaf-linked trees. Normally,
these structures are handled with destructive assignments to
heaps, which is opposed to a purely functional programming style
and makes verification difficult. We propose a new purely
functional language, λGT, that handles graphs as immutable,
first-class data structures with a pattern matching mechanism
based on Graph Transformation and developed a new type system,
FGT, for the language. Our approach is in contrast with the
analysis of pointer manipulation programs using separation logic,
shape analysis, etc. in that (i) we do not consider destructive
operations but pattern matchings over graphs provided by the new
higher-level language that abstract pointers and heaps away and
that (ii) we pursue what properties can be established
automatically using a rather simple typing framework.
DOI:
10.2197/ipsjjip.31.112
We propose to extend the concept of difference lists to general
data structures and call them difference data structures.
Difference lists are well-known in logic programming as a data
structure that realizes constant-time concatenation by retaining a
reference to the tail as well as the head of the list. In recent
years, they are also called list segments and appear as a typical
example of separa- tion logic, a logic for handling heaps and
pointers. Difference data structures can be utilized to discuss
various important concepts in programming languages including
functions, evaluation contexts, and continuations, in a unified
setting. To handle such structures succinctly and safely, we base
this work on a graph rewriting lan- guage. We propose a typing
method for graph rewriting languages based on graph grammar, which
covers structures beyond algebraic data types, to allow users to
define difference data types for two different major applications,
i.e., (i) users can describe powerful pat- tern matching with
user-defined shapes and (ii) the implementation can statically
type-check operations on difference data structures efficiently.
Our method introduces the concept of difference at the meta-level,
i.e., difference data types are automatically derived from the
base data type defined by graph grammar so that we can treat the
base structure and difference structure uniformly without type
conversion.
DOI:
10.1145/3678232.3678243
グラフ書換え言語 LMNtal
は,グラフの書換えによって計算を表現するプログラミング言語としての側面と,一般の複雑なグラフ構造を扱えるモデリング言語としての側面を併せ持つ言語である.また,関数的アトムというデザインパターンを用いて,型の変換を伴う演算をも記述できる.一方で,グラフ書換え言語ではリストや二分木よりも複雑な構造を扱えるため,静的な型体系の定式化は自明でない.グラフ書換えの前後においてグラフの構造が保たれることを検査する静的型体系の先行研究として,Structured
Gamma が存在する.そこで本研究では,Structured Gamma
を基に,LMNtal
に静的型を導入することを考える.本論文では,Structured Gamma
の型検査手法を用いて,関数的アトムの入力と出力の型が整合していることを検査する手法を提案する.
PDF:
講演論文集
グラフ書換え言語 LMNtal
は,グラフの書換えによって計算を表現するプログラミング言語としての側面と,一般の複雑なグラフ構造を扱えるモデリング言語としての側面とを兼ね備えた言語である.そして,LMNtal
の処理系は通常のプログラム実行とモデル検査の双方に対応した,強力な機能を提供している.グラフ書換え言語では,関数型言語で扱える代数的データ構造よりも広範な構造を扱えるため,静的な型検査の定式化は自明でない.そこで,書換え規則の型検査の手法として,グラフを対象とする静的型検査手法である
Structured Gamma を基にした,LMNtalShapeType
が提案されている.本論文では,LMNtal ShapeType に対し,LMNtal
の拡張機能である型付きプロセス文脈を援用することにより,添字付きの非終端記号を表現し,赤黒木などの数値制約を伴うグラフ型を対象とした書換え規則の型検査を行う手法について述べる.
PDF:
講演論文集
グラフ書換え言語 LMNtal
は,グラフの書換えによって計算を表現するプログラミング言語としての側面と,一般の複雑なグラフ構造を扱えるモデリング言語としての側面とを兼ね備えた言語である.LMNtal
プログラムは,読者の理解を助けるために,そのプログラムに対応するグラフの図的表現と併記されることがある.しかし,LMNtal
の項はア・プリオリにグラフとして意味づけされているわけではなく,λ
計算や π
計算といった計算モデルと同様に,構文主導の意味論によって定義されている.そのため,LMNtal
プログラムとその図的表現との対応関係は自明でない.そこで,LMNtal
の項上の同値関係である構造合同関係と,グラフ理論におけるグラフ同型性との対応を明らかにするための準備として,本論文ではまず定理証明支援系
Coq の上で LMNtal の抽象構文と意味論を実装し,LMNtal
言語に関する性質の証明を Coq 上で行った.
PDF:
講演論文集
グラフ書換え言語 LMNtal
は,グラフの書換えによって計算を表現するプログラミング言語としての側面と,一般の複雑なグラフ構造を扱えるモデリング言語としての側面とを兼ね備えた言語である.グラフ書換え言語では,関数型言語で扱える代数的データ構造よりも広範な構造を扱えるため,計算対象となるグラフの型の定式化が課題となっている.そこで我々は,グラフの型に関する枠組みとして,形式文法に基づいた
LMNtal ShapeType
を提案し,文脈自由を超えた広範な型に対応した型検査手法を定式化してきた.しかし,ラムダ式のグラフによる表現やグリッドグラフなど,ルートの本数が一定でない型については,型の定義や検査手法が他の型に比べても自明でない.そこで本論文では,LMNtal
ShapeType
の定義および検査手法に対して拡張を施すことで,以上のようなグラフ型を対象とする型検査手法の定式化を目指す.
PDF:
講演論文集
グラフ書換え言語 LMNtal
は,グラフの書換えによって計算を表現するプログラミング言語としての側面と,一般の複雑なグラフ構造を扱えるモデリング言語としての側面とを兼ね備えた言語である.LMNtal
プログラムは構文レベルでポインタ安全であることが保証されているが,静的に型エラーを報告する機能がないため,プログラマの意図しない振る舞いを起こす危険性がある.グラフ書換え言語では,関数型言語で扱える代数的データ構造よりも広範な構造を扱えるため,計算対象となるグラフの型の定式化は自明でない.特に,部分グラフから部分グラフへの書換えとして記述されるグラフの操作については,軽量な型安全性の検証手法が課題となっていた.そこで本論文では,グラフ書換え言語を対象とする静的かつ軽量な型検査手法として,型の差分情報に基づく手法を新たに提案する.
PDF:
講演論文集
Lambda*Magica をはじめ、ラムダ計算のインタプリタはこれまでにも幾つか存在した。 しかし、Web ページ上で動作するといった実用性をもち、かつ簡約グラフを表示できる・マクロ定義ができるといった十分な機能性を備えたインタプリタは、著者の知る限り存在しない。そこで、これらの機能を備えた新たなインタプリタ「らむだフレンズ」を実装した。
グラフ書換え言語LMNtalは,一般のグラフ構造を容易に扱えるプログラミング言語である.しかし,LMNtalには型エラーを報告する機能がなく,プログラマの意図しない振る舞いを起こすことがある.そこで,LMNtalに静的型を導入することを考える.LMNtalを対象とする静的型体系の先行研究として,LMNtal ShapeTypeが存在する.本研究では,LMNtal ShapeTypeにおける既知の課題点を解決するにあたり,まずLMNtal ShapeTypeをより正確に定式化し,型検査の健全性・停止性の証明を与えた.また,型の表現力を高めるために基本型・複合型といった拡張機能を新たに導入した.
The ability to handle evolving graph structures is important both for programming languages and modeling languages. Of various languages that adopt graphs as primary data structures, a graph rewriting language LMNtal provides features and applications of both (concurrent) programming languages and modeling languages, and its implementation unifies ordinary program execution and model checking functionalities. Unlike pointer manipulation in imperative languages, LMNtal allows us to manipulate graph structures in such a way that the well-formedness of graphs is an invariant guaranteed by the language itself. However, since shapes of graphs can be more complex and diverse than algebraic data structures such as lists and trees, static type checking for describing and checking shapes of graphs handled by individual programs are highly useful. With this motivation, this paper discusses LMNtal ShapeType, a type checking framework that applies the basic idea of Shape Types to a concrete graph rewriting language. Features of LMNtal ShapeType include: (i) the type checking framework is formulated as a sublanguage of the host language and exploits the nondeterministic execution mechanism of LMNtal implementation straightforwardly for type checking; (ii) it is simple and yet can handle complex and diverse graph structures including skip lists, difference lists, red-black trees, lambda-graphs, and rectangular grids; (iii) constraints on shapes such as the balancing of trees can be handled within the framework; and (iv) the typing of functions, messages and data constructors can be handled within the framework in a uniform manner.
Web上で動作する型なし・型付きラムダ計算のインタプリタ。 TypeScript (5,000 LOC超) で書かれており、OSSとして公開されている。 早稲田大学情報理工学科において100名超が受講する必修科目である 「プログラミング言語」にて2018年度より継続して使用されている。
yamamoto <hidden-mark-you-know> ueda.info.waseda.ac.jp
nyamamoto <hidden-mark-you-know> aoni.waseda.jp