(*
Reduction from:
Turing Machine Halting (HaltTM 1)
to:
System F Type Checking (SysF_TYP)
*)
Require Import Undecidability.Synthetic.Definitions Undecidability.Synthetic.ReducibilityFacts.
Require Import Undecidability.TM.TM.
Require Import Undecidability.SystemF.SysF.
Require Undecidability.SystemF.Reductions.HaltTM_1_to_SysF_TYP.
Require Undecidability.SystemF.Reductions.SysF_TYP_to_SysF_TC.
(* Many-one reduction from Turing machine halting to System F type checking *)
Theorem reduction : HaltTM 1 ⪯ SysF_TC.
Proof.
apply (reduces_transitive HaltTM_1_to_SysF_TYP.reduction).
exact SysF_TYP_to_SysF_TC.reduction.
Qed.
Reduction from:
Turing Machine Halting (HaltTM 1)
to:
System F Type Checking (SysF_TYP)
*)
Require Import Undecidability.Synthetic.Definitions Undecidability.Synthetic.ReducibilityFacts.
Require Import Undecidability.TM.TM.
Require Import Undecidability.SystemF.SysF.
Require Undecidability.SystemF.Reductions.HaltTM_1_to_SysF_TYP.
Require Undecidability.SystemF.Reductions.SysF_TYP_to_SysF_TC.
(* Many-one reduction from Turing machine halting to System F type checking *)
Theorem reduction : HaltTM 1 ⪯ SysF_TC.
Proof.
apply (reduces_transitive HaltTM_1_to_SysF_TYP.reduction).
exact SysF_TYP_to_SysF_TC.reduction.
Qed.