3

この回答を読んで、ポリモーフィック コンテナー関数の標準的な形式を構築し、証明しようとしました。構造は簡単でしたが、証明は私を困惑させました。以下は、私がどのように証明を書こうとしたかを簡略化して最小化したものです。

単純化されたバージョンは、パラメトリック性のために、十分に多様な関数がパラメーターの選択のみに基づいて動作を変更できないことを証明しています。1 つは固定型、もう 1 つはパラメトリックの 2 つの引数を持つ関数があるとします。

PolyFun : Set → Set _
PolyFun A = ∀ {X : Set} → A → X → A

証明したい性質:

open import Relation.Binary.PropositionalEquality

parametricity : ∀ {A X Y} → (f : PolyFun A) → ∀ a x y → f {X} a x ≡ f {Y} a y
parametricity f a x y = {!!}

そのような発言はアグダ内部から証明可能ですか?

4

1 に答える 1

6

いいえ、Agda でアクセスできるパラメトリック性の原則はありません (まだ! [1])。

ただし、これらのコンビネータを使用して、対応する自由定理の型を構築し、それを仮定できます。

http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.LightweightFreeTheorems

[1] http://www.cse.chalmers.se/~mouling/share/PresheafModelParametericTT.pdf

于 2015-12-21T09:38:52.783 に答える