proposition: Lemma compatible'8_companion clo (RES: compatible'8 clo): clo <9= cpn8 gf.
proof: Proof. assert (MON: monotone8 gf'8). { econstructor. apply LE, IN. eapply gf_mon, LE. apply IN. } assert (CPN: clo <9= cpn8 gf'8). { intros. econstructor. apply RES. apply PR. } intros. apply CPN in PR. econstructor; [|apply PR]. econstructor; [apply cpn8_mon|]; intros. assert (PR1: cpn8 gf'8 (gf r) <8= cpn8 gf'8 (gf'8 (cpn8 gf r))). { intros. eapply cpn8_mon. apply PR1. intros. assert (TMP: gf (cpn8 gf r) <8= (cpn8 gf r /8\ gf (cpn8 gf r))). { split; [apply cpn8_step; [apply gf_mon|]|]; assumption. } apply TMP. eapply gf_mon. apply PR2. intros. apply cpn8_base; assumption. } apply PR1 in PR0. clear PR1. eapply compat8_compat with (gf:=gf'8) in PR0; [|apply cpn8_compat, MON]. eapply gf_mon; [apply PR0|]. intros. eapply cpn8_cpn; [apply MON|]. eapply cpn8_mon; [apply PR1|]. intros. econstructor; [|apply PR2]. apply compat8_compatible', cpn8_compat, gf_mon. Qed.
imports: Program.Basics Paco(paco8 pacotac)