Library CatSem.RPCF.RPCF_syntax_rep


Require Export CatSem.PCF.PCF_RMonad.
Require Export CatSem.RPCF.RPCF_rep.

Set Implicit Arguments.
Unset Strict Implicit.
Unset Transparent Obligations.
Unset Automatic Introduction.

Obligation Tactic := simpl; intros;
         unfold Rsubst_star_map; simpl;
        apply clos_refl_trans_1n_contains;
        apply relorig;
        try apply app_abs;
        try constructor.

Program Instance PCFE_rep_struct :
       PCFPO_rep_struct PCFEM PCF.Arrow PCF.Bool PCF.Nat := {
  app r s := PCFApp r s;
  abs r s := PCFAbs r s;
  rec t := PCFRec t ;
  tttt := PCFconsts ttt ;
  ffff := PCFconsts fff;
  Succ := PCFconsts succ;
  Pred := PCFconsts preds;
  CondN := PCFconsts condN;
  CondB := PCFconsts condB;
  Zero := PCFconsts zero ;
  nats m := PCFconsts (Nats m);
  bottom t := PCFbottom t
}.

Definition PCFE_rep : PCFPO_rep :=
  Build_PCFPO_rep (Sorts:=PCF.Sorts) (Arrow:=PCF.Arrow)
   (pcf_rep_monad:=PCFEM)
   PCFE_rep_struct.