タグ

ブックマーク / fetburner.hatenablog.com (2)

  • ML のサブセットの型推論器を Coq で検証する - fetburner.core

    この記事は言語実装 Advent Calendar 2020 の5日目の記事です. 一度でも型推論器を書いたことがあれば,そのあまりの邪悪さ,あるいはその複雑さに恐れ慄いたことでしょう. 参照を用いて単一化を実現しようものなら構文木は参照に汚染され,純粋関数型に実装しようものなら大量の型代入をどのような順序で適用したものか悩まされる. これは Hindley-Milner 型推論器を実装する上での宿命のようなものです. 記事では,MLのサブセット——型付きλ計算をletと参照で拡張した,let多相をサポートする言語——の型推論器を Coq で実装し,その正当性を証明します. Coq で検証を行うことで我々は型推論器のバグへの恐怖とデバッグの労力から真に解放され,枕を高くして眠ることができることでしょう. もっとも、型付きλ計算を let 多相で拡張した言語の型推論器の正当性は実はすでに証

    ML のサブセットの型推論器を Coq で検証する - fetburner.core
  • 交差型を持つ単純型付きλ計算の型付け可能性について - fetburner.core

    これは型 Advent Calendar 2019 15日目の記事です. 交差型についてのよく知られた事実——交差型を持つ単純型付きλ計算において,強正規化する項は型付け可能であることを解説します. はじめに 交差型とは,読んで字のごとく型と型の共通部分を表す型です.すなわち,型を持つ項e(つまり )とは,型を持ち(),なおかつ型も持つ項()を指します.交差型のある体系では,SMLの+のようなアドホックな多相性1をのように表現できる嬉しさが知られています.しかし,真にヤバい点と言えば後述する性質でしょう. 交差型を含むある種の言語——交差型を持つ単純型付きλ計算——において,任意の項の型付け可能性と強正規化性は一致することが知られています.確かに左の性質から右の性質は導けそうです.単純型付きλ計算,System F,CoC等々,多くの言語において,型付けできる項は強正規化する2ことが知られ

  • 1