From Undecidability.TM Require Import TM Util.TM_facts HoareLogic HoareRegister.
Lemma RealiseIntroAll sig F n X (P : forall _ _ _ _, Prop) (M : pTM sig F n):
(forall x, M ⊨ (fun tin '(yout, tout) => P x tin yout tout)) ->
M ⊨ (fun tin '(yout, tout) => forall (x:X), P x tin yout tout).
Proof.
unfold Realise. intros. firstorder.
Qed.
Lemma TerminatesInIntroEx sig n X (T : forall _ _ _, Prop) (M : TM sig n):
(forall x, M ↓ (fun tin k => T x tin k)) ->
M ↓ (fun tin k => exists (x:X), T x tin k).
Proof.
unfold TerminatesIn. intros. firstorder.
Qed.
Lemma RealiseIntroAll sig F n X (P : forall _ _ _ _, Prop) (M : pTM sig F n):
(forall x, M ⊨ (fun tin '(yout, tout) => P x tin yout tout)) ->
M ⊨ (fun tin '(yout, tout) => forall (x:X), P x tin yout tout).
Proof.
unfold Realise. intros. firstorder.
Qed.
Lemma TerminatesInIntroEx sig n X (T : forall _ _ _, Prop) (M : TM sig n):
(forall x, M ↓ (fun tin k => T x tin k)) ->
M ↓ (fun tin k => exists (x:X), T x tin k).
Proof.
unfold TerminatesIn. intros. firstorder.
Qed.