まず、起こりうる認知的不協和を払拭するために、無限の構造についての推論は問題ではありません。私たちは常にそれを行います。構造が有限に記述可能である限り、それは問題ではありません。一般的な無限構造のいくつかのタイプを次に示します。
- 言語(有限である可能性のあるいくつかのアルファベット上の文字列のセット);
- ツリー言語(いくつかのアルファベット上のツリーのセット);
- 非決定的システムの実行トレース。
- 実数;
- 整数のセット。
- 整数から整数への関数のセット。…
最大の固定点としての共導性
帰納的定義は、基本的な構成要素から構造を構築しますが、共帰納的定義は、どのように解体できるかから構造を形成します。たとえば、要素がセット内にあるリストのタイプはA
、Coqで次のように定義されます。
Inductive list (A:Set) : Set :=
| nil : list A
| cons : A -> list A -> list A.
非公式には、このlist
型は、nil
and cons
コンストラクターから構築されるすべての値を含む最小の型であり、公理はです。逆に、これらのコンストラクターから構築されたすべての値を含む最大型を定義して、差別の公理を保持することができます。∀xy,nil≠consxy
CoInductive colist (A:Set) : Set :=
| conil : colist A
| cocons : A -> colist A -> colist A.
list
はのサブセットに同型ですcolist
。さらに、colist
無限リストが含まれます:cocons
onのリストcocons
。
CoFixpoint flipflop : colist ℕ := cocons 1 (cocons 2 flipflop).
CoFixpoint from (n:ℕ) : colist ℕ := cocons n (from (1 + n)).
flipflop
は無限(循環リスト)です。自然数の無限リストです。1::2::1::2::…from 0
0::1::2::…
結果がより小さなブロックから構築される場合、再帰的な定義は整形式です。再帰的な呼び出しは、より小さな入力で機能する必要があります。結果がより大きなオブジェクトを構築する場合、corecursive定義は整形式です。Inductionはコンストラクターを、Coinductionはデストラクタを調べます。双対性がより小さくからより大きく変化するだけでなく、入力から出力に変化することに注意してください。たとえば、上記の定義flipflop
とfrom
定義が整形式である理由はcocons
、どちらの場合でも、corecursive呼び出しがコンストラクターの呼び出しによって保護されているためです。
帰納的オブジェクトに関するステートメントに帰納的証明がある場合、共帰納的オブジェクトに関するステートメントには共帰納的証明があります。たとえば、コリストに無限の述語を定義しましょう。直感的に、無限コリストはで終わらないものですconil
。
CoInductive Infinite A : colist A -> Prop :=
| Inf : forall x l, Infinite l -> Infinite (cocons x l).
フォームの共リストfrom n
が無限であることを証明するために、共誘導によって推論することができます。from n
に等しいcocons n (from (1 + n))
。これは、from n
がより大きいことを示しています。これはfrom (1 + n)
、共帰仮説によって無限であり、したがってfrom n
無限です。
双類似性、共誘導特性
証明手法としての同時帰納は、仮想オブジェクトにも適用されます。直感的に言えば、オブジェクトに関する帰納的証明は、オブジェクトの構築方法に基づいています。共帰納的証明は、オブジェクトの分解方法に基づいています。
決定論的なシステムを研究するとき、帰納的ルールを介して等価性を定義するのが一般的です:一連の変換によって一方から他方に到達できる場合、2つのシステムは等価です。そのような定義は、異なる内部構造を持っているにもかかわらず、非決定的システムが同じ(観測可能な)動作を得ることができる多くの異なる方法を捕捉できない傾向があります。(同時誘導は、非決定的なシステムであっても、それらが決定論的であっても説明するのに役立ちますが、これはここで焦点を当てるものではありません。)
並行システムなどの非決定的システムは、多くの場合、ラベル付き遷移システムによってモデル化されます。LTSは、エッジにラベルが付けられた有向グラフです。各エッジは、システムの可能な遷移を表します。LTSのトレースは、グラフ内のパス上のエッジラベルのシーケンスです。
2つのLTSは、内部構造が異なっていても同じトレースを使用できるという点で、同じように動作できます。グラフ同型は強すぎてそれらの等価性を定義できません。代わりに、2番目のLTSのすべての遷移が最初のLTSの対応する遷移を許可する場合、LTSは別のLTSをシミュレートすると言われます。正式には、 2つのLTSの状態の互いに素な結合、(共通)ラベルのセット、遷移関係とします。関係は、次の場合のシミュレーションです。
ABSL→R⊆S×S
∀(p,q)∈R, if p→αp′ then ∃q′,q→αq′ and (p′,q′)∈R
Aをシミュレートのすべての状態たシミュレーションがある場合での状態に関連している。が両方向のシミュレーションである場合、バイシミュレーションと呼ばれます。シミュレーションは共誘導特性です。一方の観測値は、他方の観測値と一致する必要があります。BBAR
LTSには潜在的に多くのバイシミュレーションがあります。異なるバイシミュレーションにより、異なる状態が識別される場合があります。2つのバイシミュレーションおよび与えられた場合、関係グラフの結合をとることによって与えられる関係は、それ自体がバイシミュレーションです。(これは無限の結合にも当てはまります。空のリレーションは、同一性リレーションと同様に、意味のないバイシミュレーションです。)特に、すべてのバイシミュレーションの結合自体は、バイシミラーリティと呼ばれるバイシミュレーションです。相似性は、異なる状態を区別しないシステムを観察する最も粗い方法です。R1R2R1∪R2
双類似性は共帰納的性質です。これは、演算子の最大の固定点として定義できます。これは、同等の状態を識別するために拡張しても、同じままである最大の関係です。
参照資料
Coqと帰納的構築の計算
- イヴ・ベルトーとピエール・カステラン。インタラクティブな定理証明とプログラム開発— Coq'Art:帰納的構成の計算。スプリンガー、2004。13. [ ウェブサイト ] [ アマゾン ]
- エドゥアルド・ギメネス。coqにおける共誘導型のアプリケーション:交互ビットプロトコルの検証。では証明とプログラムの種類に関するワークショップ、内数1158 コンピュータサイエンスの講義ノート、ページ135から152。Springer-Verlag、1995。[ Googleブックス ]
- エドゥアルド・ギメネスとピエール・カステラン。Coqの[Co-]帰納的型に関するチュートリアル。2007. [ PDF ]
ラベル付き遷移システムとバイシミュレーション