とある論文で使っていた用語法:
- シーケントの左辺 = antecedent〈前件〉
- シーケントの右辺 = succedent〈後件〉
- イニシャルシーケント = 公理シーケント
シーケントの推論規則用語:
- 上式 = premises〈仮定〉
- 下式 = conclusion〈結論〉
前件、後件、仮定、結論をどのレベルに割り当てるかは人それぞれ。致し方ない。
一般に、矢印で区切られた順序対に関しては、次が良いと思う。
- 矢印の根本側 : pre-item
- 矢印の先端側 : post-item
とある論文で使っていた用語法:
シーケントの推論規則用語:
前件、後件、仮定、結論をどのレベルに割り当てるかは人それぞれ。致し方ない。
一般に、矢印で区切られた順序対に関しては、次が良いと思う。
次の双対性がある。
存在と全称の双対性は、存在ボックスと全称ボックスの双対性。
data Tree a = Leaf a | Tree (Tree a) (Tree a)
値コンストラクタ、型コンストラクタ、型が紛らわしいという例。値コンストラクタをタグだと考えると:
type Tree<A> = @Leaf A | @Tree [Tree<A>, Tree<A>]
タグ @Leaf, @Tree に対応する値コンストラクタを ^Leaf, ^Tree とすると:
これで区別できた。
対象物:
カリー/ハワード/ランベック対応
型 | 命題 |
関数 | 導出 |
値 | 保証 |
汎関数 | リーズニング |
項:
バンチと書き換えアクション:
構成スクリプト:
課題:スクリプトレベルでのカリー/ハワード/ランベック対応
https://arxiv.org/abs/2102.03044 から。
証明が行うこと | 読者の心に形成されるもの |
---|---|
guarantee | trust |
explain | insight, understanding |
https://arxiv.org/abs/2102.03044 の冒頭、同語義:
単なる多義語ならいいのだけど、実際には曖昧語になっているのがタチが悪い。
動詞 DoSomething | 名詞 Something | 短縮 |
---|---|---|
construct | construction | cons |
calculate | calculation | calc |
derive | derivation | deriv |
reason | reasoning | reas |
Begin Something WeHave A And, B Using Something X params WeHave A' And, B' Using Something Y params ... ... End Something
WeHave は省略可能。And, は単に , でもよい。その他省略すると:
Something A, B Using X params A', B' Using Y params ... ... End
あるいは:
Something foo := Begin A, B Using X params A', B' Using Y params ... ... End
$`\newcommand{\Sep}{\mathrel{\|} }
\newcommand{\Subst}[2]{ {\scriptsize \begin{bmatrix} #1\\ #2 \end{bmatrix} } }
%`$
$`\quad \alpha \Sep \varphi: \Gamma \to B`$
ここで:
これは以下と同じ。
$`\quad \varphi: \Gamma \to B \text{ in }\mathrm{Prop}[\alpha]`$
$`f:\beta \to\alpha`$ を型コンテキストのあいだの多写像として、置換結果は次の導出になる。
$`\quad \beta \Sep \varphi': \Gamma\Subst{f(\vec{y})}{ \vec{x}} \to B\Subst{f(\vec{y})}{ \vec{x}} `$
palette CCC { parameter wire X, Y, Z node left-eval[X, Y] : (X, X⇒Y) → (Y) node decomp-prod[X, Y] : (X×Y) → (X, Y) node swap[X, Y] : (X, Y) → (Y, X) action LeftCurry[X, Y, Z] :: ((X, Y) → (Z)) ~~→ ((Y) → (X⇒Y)) // ...省略... parameter node f: X, Y → Z conversion Beta[X, Y, Z, f] :: ( (X, LeftCurry[X, Y, Z](f));left-eval[X, Y] ) ~~→ (f) // ...省略... }
alias ∧ := × declare A, B, C canvas put A∧B, A⇒(B⇒C) put CCC.decomp-prod[A, B] put CCC.swap[A, B] put --after=1 CCC.left-eval[A, B⇒C] put CCC.left-eval[B, C] we possess ( A∧B, A⇒(B⇒C) ) → (C) close exec CCC.LeftCurry[A∧B, A⇒(B⇒C), C]
描画モデルは、描画エージェント(一人、ペインター、画師、絵師)、キャンバス(入れ子可能)、パレット(複数可能)からなる。
次は基本的な概念:
coloured properad, coloured PROP, many-sorted Lawvere theory の関係は https://arxiv.org/pdf/1512.05980.pdf で確認。
型・関数 | 命題・導出 |
---|---|
0-射 型 | 0-射 命題 |
0-オペレータ 積 | 0-オペレータ 連言 |
0-オペレータ 指数 | 0-オペレータ 含意 |
0-射 指数型 | 0-射 含意命題 |
1-射 関数 | 1-射 導出 |
1-射 データ | 1-射 保証〈ワランティー〉 |
1-射 入射〈余射影〉 | 1-射 証拠 |
1-射 射影〈成分〉 | 1-射 具体化 |
構造化型 | 構造化命題 |
複1-射 複関数 | 複1-射 複導出 |
多1-射 多関数 | 多1-射 多導出 |
ラムダ抽象 | 含意導入 |
評価写像 | モーダスポネンス |
0-射 パイ型 | 0-射 全称命題 |
翻訳関手 |
保証〈ワランティー〉は新しく導入した言葉。
その他:
ただし、役割としての型コンテキスト、命題コンテキストは使うかも。
少し追記。
様々なレベルのプログラミングが出来る。
命題とデータは関数の特別なもの。置換は関数の集まり。
まず、次は同義語扱いしたほうがいい。
例えば、
variable x, y : Real, c : Color type-context {x:Real, y:Real, c:Color} 0-signature _ { 0-mor x in Real 0-mor y in Real 0-mor c in Color } 1-signature _ { 1-mor x : 1 → Real in Set 1-mor y : 1 → Real in Set 1-mor c : 1 → Color in Set } struct ColoredPoint { Real x, Real y, Color c } record ColoredPoint { x: Real, y: Real y, c: Color } schema ColoredPoint { x : Real, x: Real, c: Color }
ソート、ポイント1-射、変数型選言、法則からなる定義を伝統的指標と呼ぶ。
参考: U+21D2 ⇒ RIGHTWARDS DOUBLE ARROW, U+21D0 ⇐ LEFTWARDS DOUBLE ARROW
trad signature Monoid { sort U point m:[U ⇐ U×U] point e:U variable x, y, z : U law assoc :: m(m(x, y), z) = m(x, m(y, z)) varible x : U law lunit :: m(e, x) = x law runit :: m(x, e) = x }
伝統的指標は、無法則指標と型コンテキストと型コンテキスト上の論理式〈命題〉に分解できる。
無法則指標に対して、それから生成される型と関数の圏、型コンテキストと置換の圏が決まる。法則の命題は、ハイパードクトリンの生成系になる。
デカルト・ハイパードクトリンに対する演繹システムは、次の構文要素を持つ。
Γ, Σ, Δ などは型コンテキストを表す。置換射〈substitution〉は S:Γ → Σ というプロファイルを持つ、これは導出とシーケントではない。
置換射は、反変的な翻訳関手〈translation functo〉 S* = (-)[S] を誘導する。翻訳関手、翻訳関手の対象パート/射パートを置換〈代入〉と呼ぶことがある。
限量子は翻訳関手の左右の随伴パートナー関手として定義される。限量子は命題と導出の圏のあいだの関手である。
それと、$`\Gamma \mid \Theta \vdash \psi`$ 形式のシーケント(導出のプロファイル)において、
型コンテキストで宣言された自由変数しか命題内で使えない。
例:
$`\quad \{x:{\bf N}, y:{\bf N} \} \mid (\text{odd}(x), \text{odd}(y)) \vdash \text{even}(x + y)`$
型の圏(複圏、多圏もある)と命題の圏(複圏、多圏もある)との関係。カリー/ハワード/ランベック対応(むしろ、カリー/ハワード/ランベック・フレームワーク)があるので似てる。抽象化すれば同じになる。が、型コンテキストの圏の対象の上に命題の圏が乗って置換〈substitution〉と限量子で命題の圏が繋がる構造を持っている。一言で言えば、ハイパードクトリン。インスティチューションとしても定式化できる。
共通の用語や、異なる用語。
https://cs.au.dk/~birke/papers/categorical-logic-tutorial-notes.pdf の規則を列挙しておく。
型の圏の“規則”
恒等単純関すと各種の結合が圏類似構造の公理だとして、次の基本構成の存在を要請している。
射もモノイド積に相当するマージ規則を許せば、次のように単純化できる。
演繹の構造規則
プレ多結合してよい多導出は:
引き戻し〈置換 | 翻訳〉に使ってよい関数類は:
論理の規則 so-called 自然演繹
MEDL(Mathematical Entity Description Lang.)とDIDL(Drawing Instruction and Description Lang.)について。
DIDLはある程度は汎用の絵図記述言語。だが、直接的な目的は証明記述。「証明」は曖昧語なので、テクニカルタームとしては導出〈derivation〉を使う。「推論」もテクニカルタームとしては使わない。
「項」はテキスト記号表現〈テキスト・コンビネーション〉の意味で使う。項の種類は:
ここでの「定数項」はプロファイルが 1 → A の形の関数項のこと。ちなみに定数の意味は:
登場する圏類似構造
型の圏、型の複圏は、型コンテキストの圏に埋め込める。型の多圏と型コンテキストの圏は、変数がある点で違う。
型コンテキストの圏の対象ごとに、そのコンテキスト上の命題の多圏が載る。インスティチューションまたはハイパードクトリン。型コンテキストの圏の射である割り当て系により置換または翻訳と呼ぶ引き戻し多関手が定義される。演繹システムの“規則”としては、引き戻し反変多関手(インスティチューションでは反変共変が逆になる)を SUBSTITUTION と呼ぶ。以下の“規則”はすべて SUBSTITUTION の特殊ケースとなる。
型の圏と命題の圏は共通構造を持っている。