不明瞭なところ色々

矢印の奪い合い問題
  1. 含意を表す
  2. 指数型〈関数型 | アロー型〉を表す
  3. 射のプロファイルの区切り記号
  4. シーケントの区切り記号(前提と結論)

暫定的解決

  1. 含意と指数はカリー/ハワード対応により同一視して → を使う。
  2. 射のプロファイルの区切り記号にターンスタイル $`\vdash`$(\vdash) を使う。
  3. 射はバンチ複圏〈bunched multicategory〉の複射でもよい。バンチとして依存レコード〈テレスコープ〉を考えることが多い。
  4. 射のプロファイルとシーケントは同義語として、シーケントの区切り記号もターンスタイル〈turnstile〉を使う。
定義による効果: コンテキストの拡張・増大

定義によって何が生成されるか? これも曖昧。

define function x:A := t

に対して、次の6つのモノが混合コンテキストに追加される。

  1. declared name x : A
  2. confiermed typing t:A
  3. assigned body x := t
  4. registered equation x ≡ t
  5. registered conversion x ~~> t

これらの追加〈append〉のためには、validityが必要。

  1. 名前が構文的に正しい名前である。
  2. 型項が構文的に正しい型項である。
  3. 値項が構文的に正しい項である。
  4. 型付け〈タイピング〉が正しい。

これらの検証〈チェック〉作業が終わると、コンテキストに追加されて、結果的にコンテキストが膨らむ。次の作業は、膨らんだコンテキストに基づいてなされる。

等号の奪い合い問題
  1. 定義的等号〈definitional equality symbol〉
  2. 命題的等号〈propositional equality symbol〉
  3. 述語記号〈predicate symbol〉
  4. n-圏のn-射

次のようにする。

  1. 定義的等号: ≡
  2. 命題的等号: =
  3. 述語記号: eq
  4. n-圏のn-射: ⇒ などの次元付き矢印記号と id-アノテーション

他に、一般的同値関係は ~ で表す。

判断、問題、解の区别

区別してない。

  • 型つけ判断: judgement Γ |- t:A
  • 型つけ問題: problem Γ |- t:?A
  • 項構成問題: problem Γ |- ?t:A
  • 存在判断: existential judgement Γ |- A
  • 問題の解: solution of problem Γ |- t:?A
  • 問題の解: solution of problem Γ |- ?t:A
  • 問題の解: solution t of problem Γ |- t:A
  • 問題の解: solution A of problem Γ |- t:A
  • 相対判断: providing Γ judgement Δ |- t:A
  • 相対問題: providing Γ problem Δ |- ?t:A
  • 相対問題の解: providing Γ solution of problem Δ |- ?t:A

項構成問題に対して、順行ソルバーと逆行ソルバーがあり、ソルバーをプログラムとして作ることをソルバー・プログラミングと呼ぶ。特に、項が証明項のときの逆行ソルバーのプログラミングはタクティク・プログラミング

事実と予告

宣言文が環境としての事実の宣言と、今後やることの予告の宣言がある。

declare defined succ: Nat |- Nat
declare defining add: Nat, Nat |- Nat

自然言語風に書くと:

it's already defined succ: Nat |- Nat
we will define add: Nat, Nat |- Nat
引数渡しとカリー化後の適用演算

f: A |- B と f': |- (A → B) があるとき、a: |- A に対して、

  • a;f = a▷f = f◁a = f' a (ベータ等式)

f |→ f' というカリー化はコアージョンとして組み込まれている。その結果、カリー化したモノの名前はオーバーロードされる。

コロンの奪い合い問題
  • 圏論: f: プロファイル でプロファイル宣言
  • 型理論: a: 型 で型つけ宣言〈タイピング宣言〉
  • (型理論 a:型) ⇔ (圏論 a: 1 |- 型)
  • 圏論のプロファイル宣言は、フルカリー化して型理論のタイピング宣言にする。ここで齟齬が生まれる。