弱い正規化を証明することと評価者を実装することの違いは何ですか?

型システムAのための完全な型システムBを持つ言語の正規化(カット除去)手続きを実装することは、実装が総計であるので、型システムAの切捨てを自動的に証明します。

弱い正規化を証明することと評価者を実装することの違いは何ですか?

もし存在しなければ、その効果はすべての数学的証明システムの一貫性を証明するのにも存在しますか?

強力な正規化設定で同じ質問: ホスト言語が強く正規化されている場合、クライアント言語の正規化は次のようになります。

ベストアンサー

トータルシステム$ B $の中で$ A
$という言葉のための評価者を実装し、さらにあなたの評価者が正しいことを証明されている場合 $ A
$で、

$$ mathrm {eval}(t) simeq_A t $$

ここで、$ simeq_A $は$ A $の等価であり、$ simeq_A
$は決定可能であることのみを示しています。

さらに、$ simeq_A $が自然に縮小$ rightarrow_A $の概念につながり、$ mathrm
{eval}(t)$が通常の形であれば、$ A $のすべての項$ t $は通常の形の用語に相当します。

これは$ Aの一貫性には十分ですが、$ rightarrow_A $がさらに です。 html “rel
=” nofollow noreferrer “> church-rosser

これは基本的に評価による正規化のアプローチです。

建設的な論理における弱い正規化の証明は、すべての$ forall exists
$ステートメントがアルゴリズム(構造によって正しい)につながるので、当然評価者につながります。

Ulrich Bergerの素敵な記事があります。 rel=”nofollow
noreferrer”>正規化証明からのプログラム抽出
は、単純に$ lambda $
-calculusと入力した場合にこのアイデアを実装します。


あなたの2番目の質問については、ここに反例があります。 $ A $の言語には、$ Delta $と$ bot
$という2つの項のみが含まれているとします。

$$ Delta rightarrow Delta $$ $$ Delta rightarrow bot
$$

もしあなたが好きなら、自由にタイプを追加してください。計算ルールは弱く正規化されコンフルエントになっています。

Coqでは、 eval 関数を書くことができます:

Fixpoint eval (t : A) : A :=
  match t with
     | Delta => Bottom
     | Bottom => Bottom

$ t leftrightarrow ^ * u $、次に eval(t)=
eval(u)
なら証明するのはそれほど難しいことではありません。
Coqの削減は非決定論的と見なすことができます。この場合、SN継承の反例があります。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です