Welcome to Abella 2.0.5-dev
Abella < Specification "trans".
Reading specification "/home/fac05/gopalan/test/sparrow/compiler-correctness/website/wang-phd-thesis/code/./trans" (from "/home/fac05/gopalan/test/sparrow/compiler-correctness/website/wang-phd-thesis/code/.")
Abella < Import "cps_sem_pres".
Importing from /home/fac05/gopalan/test/sparrow/compiler-correctness/website/wang-phd-thesis/code/./cps_sem_pres
Warning: Definition might not be stratified
("equiv_cps" occurs to the left of ->)
Abella < Import "cc_sem_pres".
Importing from /home/fac05/gopalan/test/sparrow/compiler-correctness/website/wang-phd-thesis/code/./cc_sem_pres
Warning: Definition might not be stratified
("equiv_cc" occurs to the left of ->)
Abella < Import "ch_sem_pres".
Importing from /home/fac05/gopalan/test/sparrow/compiler-correctness/website/wang-phd-thesis/code/./ch_sem_pres
Warning: Definition might not be stratified
("equiv_ch" occurs to the left of ->)
Warning: Definition might not be stratified
("equiv_ch" occurs to the left of ->)
Abella < Import "cgen_sem_pres".
Importing from /home/fac05/gopalan/test/sparrow/compiler-correctness/website/wang-phd-thesis/code/./cgen_sem_pres
Warning: Definition might not be stratified
("equiv" occurs to the left of ->)
Warning: Definition might not be stratified
("equiv" occurs to the left of ->)
Abella < Theorem nat_sem_pres :
forall M M' N, {of M tnat} -> {compile M M'} -> {eval M (nat N)} ->
{eval'' M' (nat' N)}.
============================
forall M M' N, {of M tnat} -> {compile M M'} -> {eval M (nat N)} ->
{eval'' M' (nat' N)}
nat_sem_pres < intros.
Variables: M M' N
H1 : {of M tnat}
H2 : {compile M M'}
H3 : {eval M (nat N)}
============================
{eval'' M' (nat' N)}
nat_sem_pres < case H2.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
============================
{eval'' M' (nat' N)}
nat_sem_pres < apply cps_nat_sem_pres to H1 H4 H3.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
H8 : {eval M1 (nat N)}
============================
{eval'' M' (nat' N)}
nat_sem_pres < apply cps_typ_pres_atom to H1 H4.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
H8 : {eval M1 (nat N)}
H9 : {of M1 tnat}
============================
{eval'' M' (nat' N)}
nat_sem_pres < apply cc_nat_sem_pres to H9 H5 H8.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
H8 : {eval M1 (nat N)}
H9 : {of M1 tnat}
H10 : {eval' M2 (nat' N)}
============================
{eval'' M' (nat' N)}
nat_sem_pres < apply cc_typ_pres_closed to H9 H5.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
H8 : {eval M1 (nat N)}
H9 : {of M1 tnat}
H10 : {eval' M2 (nat' N)}
H11 : {of' M2 tnat}
============================
{eval'' M' (nat' N)}
nat_sem_pres < apply ch_nat_sem_pres to H11 H6 H10.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
H8 : {eval M1 (nat N)}
H9 : {of M1 tnat}
H10 : {eval' M2 (nat' N)}
H11 : {of' M2 tnat}
H12 : {eval'' (htm FE M3) (nat' N)}
============================
{eval'' M' (nat' N)}
nat_sem_pres < apply ch_typ_pres_closed to H11 H6.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
H8 : {eval M1 (nat N)}
H9 : {of M1 tnat}
H10 : {eval' M2 (nat' N)}
H11 : {of' M2 tnat}
H12 : {eval'' (htm FE M3) (nat' N)}
H13 : {of'' (htm FE M3) tnat}
============================
{eval'' M' (nat' N)}
nat_sem_pres < apply cg_nat_sem_pres to H13 H7 H12.
Variables: M M' N M3 FE M2 M1
H1 : {of M tnat}
H3 : {eval M (nat N)}
H4 : {cps' M M1}
H5 : {cc' M1 M2}
H6 : {ch M2 (htm FE M3)}
H7 : {hcgen (htm FE M3) M'}
H8 : {eval M1 (nat N)}
H9 : {of M1 tnat}
H10 : {eval' M2 (nat' N)}
H11 : {of' M2 tnat}
H12 : {eval'' (htm FE M3) (nat' N)}
H13 : {of'' (htm FE M3) tnat}
H14 : {eval'' M' (nat' N)}
============================
{eval'' M' (nat' N)}
nat_sem_pres < search.
Proof completed.
Abella <