Require Import List.
From Undecidability.MuRec
Require Import recalg ra_univ ra_univ_andrej.
Require Import Undecidability.MuRec.RA_UNIV_HALT.
Require Import Undecidability.DiophantineConstraints.H10C.
Require Import Undecidability.Synthetic.Undecidability.
Set Implicit Arguments.
Local Notation "'⟦' f '⟧'" := (@ra_rel _ f) (at level 0).
Definition H10C_RA_UNIV : list h10c -> RA_UNIV_PROBLEM.
Proof.
intros lc.
destruct (nat_h10lc_surj lc) as (k & Hk).
exact k.
Defined.
Theorem H10C_SAT_RA_UNIV_HALT : H10C_SAT ⪯ RA_UNIV_HALT.
Proof.
exists H10C_RA_UNIV; intros lc.
unfold H10C_RA_UNIV.
destruct (nat_h10lc_surj lc) as (k & Hk).
symmetry; apply ra_univ_spec; auto.
Qed.
Check H10C_SAT_RA_UNIV_HALT.
Definition H10UC_RA_UNIV_AD : list h10uc -> RA_UNIV_PROBLEM.
Proof.
intros lc.
destruct (nat_h10luc_surj lc) as (k & Hk).
exact k.
Defined.
Theorem H10UC_SAT_RA_UNIV_AD_HALT : H10UC_SAT ⪯ RA_UNIV_AD_HALT.
Proof.
exists H10UC_RA_UNIV_AD; intros lc.
unfold H10UC_RA_UNIV_AD.
destruct (nat_h10luc_surj lc) as (k & Hk).
symmetry; apply ra_univ_ad_spec; auto.
Qed.
Check H10UC_SAT_RA_UNIV_AD_HALT.