Welcome to Abella 1.1.3-dev2
Reading clauses from pcf.mod
Abella < Theorem subject_reduction :
forall P V T, {eval P V} -> {of P T} -> {of V T}.
1 subgoal(s).
============================
forall P V T, {eval P V} -> {of P T} -> {of V T}
subject_reduction < induction on 1.
1 subgoal(s).
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
============================
forall P V T, {eval P V}@ -> {of P T} -> {of V T}
subject_reduction < intros.
1 subgoal(s).
Variables: P, V, T
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H1 : {eval P V}@
H2 : {of P T}
============================
{of V T}
subject_reduction < case H1.
13 subgoal(s).
Variables: P, V, T
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of zero T}
============================
{of zero T}
subgoal 2 is:
{of tt T}
subgoal 3 is:
{of ff T}
subgoal 4 is:
{of (succ V1) T}
subgoal 5 is:
{of zero T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of tt T}
subgoal 8 is:
{of ff T}
subgoal 9 is:
{of V T}
subgoal 10 is:
{of V T}
subgoal 11 is:
{of (abs T1 R) T}
subgoal 12 is:
{of V T}
subgoal 13 is:
{of V T}
subject_reduction < search.
12 subgoal(s).
Variables: P, V, T
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of tt T}
============================
{of tt T}
subgoal 2 is:
{of ff T}
subgoal 3 is:
{of (succ V1) T}
subgoal 4 is:
{of zero T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of tt T}
subgoal 7 is:
{of ff T}
subgoal 8 is:
{of V T}
subgoal 9 is:
{of V T}
subgoal 10 is:
{of (abs T1 R) T}
subgoal 11 is:
{of V T}
subgoal 12 is:
{of V T}
subject_reduction < search.
11 subgoal(s).
Variables: P, V, T
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of ff T}
============================
{of ff T}
subgoal 2 is:
{of (succ V1) T}
subgoal 3 is:
{of zero T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of tt T}
subgoal 6 is:
{of ff T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of V T}
subgoal 9 is:
{of (abs T1 R) T}
subgoal 10 is:
{of V T}
subgoal 11 is:
{of V T}
subject_reduction < search.
10 subgoal(s).
Variables: P, V, T, V1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (succ M) T}
H3 : {eval M V1}*
============================
{of (succ V1) T}
subgoal 2 is:
{of zero T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of tt T}
subgoal 5 is:
{of ff T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of (abs T1 R) T}
subgoal 9 is:
{of V T}
subgoal 10 is:
{of V T}
subject_reduction < case H2.
10 subgoal(s).
Variables: P, V, T, V1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M V1}*
H4 : {of M num}
============================
{of (succ V1) num}
subgoal 2 is:
{of zero T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of tt T}
subgoal 5 is:
{of ff T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of (abs T1 R) T}
subgoal 9 is:
{of V T}
subgoal 10 is:
{of V T}
subject_reduction < apply IH to H3 H4.
10 subgoal(s).
Variables: P, V, T, V1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M V1}*
H4 : {of M num}
H5 : {of V1 num}
============================
{of (succ V1) num}
subgoal 2 is:
{of zero T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of tt T}
subgoal 5 is:
{of ff T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of (abs T1 R) T}
subgoal 9 is:
{of V T}
subgoal 10 is:
{of V T}
subject_reduction < search.
9 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (pred M) T}
H3 : {eval M zero}*
============================
{of zero T}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of tt T}
subgoal 4 is:
{of ff T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of (abs T1 R) T}
subgoal 8 is:
{of V T}
subgoal 9 is:
{of V T}
subject_reduction < case H2.
9 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M zero}*
H4 : {of M num}
============================
{of zero num}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of tt T}
subgoal 4 is:
{of ff T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of (abs T1 R) T}
subgoal 8 is:
{of V T}
subgoal 9 is:
{of V T}
subject_reduction < search.
8 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (pred M) T}
H3 : {eval M (succ V)}*
============================
{of V T}
subgoal 2 is:
{of tt T}
subgoal 3 is:
{of ff T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of (abs T1 R) T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of V T}
subject_reduction < case H2.
8 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (succ V)}*
H4 : {of M num}
============================
{of V num}
subgoal 2 is:
{of tt T}
subgoal 3 is:
{of ff T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of (abs T1 R) T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of V T}
subject_reduction < apply IH to H3 H4.
8 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (succ V)}*
H4 : {of M num}
H5 : {of (succ V) num}
============================
{of V num}
subgoal 2 is:
{of tt T}
subgoal 3 is:
{of ff T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of (abs T1 R) T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of V T}
subject_reduction < case H5.
8 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (succ V)}*
H4 : {of M num}
H6 : {of V num}
============================
{of V num}
subgoal 2 is:
{of tt T}
subgoal 3 is:
{of ff T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of (abs T1 R) T}
subgoal 7 is:
{of V T}
subgoal 8 is:
{of V T}
subject_reduction < search.
7 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (is_zero M) T}
H3 : {eval M zero}*
============================
{of tt T}
subgoal 2 is:
{of ff T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of (abs T1 R) T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of V T}
subject_reduction < case H2.
7 subgoal(s).
Variables: P, V, T, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M zero}*
H4 : {of M num}
============================
{of tt bool}
subgoal 2 is:
{of ff T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of (abs T1 R) T}
subgoal 6 is:
{of V T}
subgoal 7 is:
{of V T}
subject_reduction < search.
6 subgoal(s).
Variables: P, V, T, V1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (is_zero M) T}
H3 : {eval M (succ V1)}*
============================
{of ff T}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of (abs T1 R) T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of V T}
subject_reduction < case H2.
6 subgoal(s).
Variables: P, V, T, V1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (succ V1)}*
H4 : {of M num}
============================
{of ff bool}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of (abs T1 R) T}
subgoal 5 is:
{of V T}
subgoal 6 is:
{of V T}
subject_reduction < search.
5 subgoal(s).
Variables: P, V, T, N2, N1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (if M N1 N2) T}
H3 : {eval M tt}*
H4 : {eval N1 V}*
============================
{of V T}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of (abs T1 R) T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of V T}
subject_reduction < case H2.
5 subgoal(s).
Variables: P, V, T, N2, N1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M tt}*
H4 : {eval N1 V}*
H5 : {of M bool}
H6 : {of N1 T}
H7 : {of N2 T}
============================
{of V T}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of (abs T1 R) T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of V T}
subject_reduction < apply IH to H4 H6.
5 subgoal(s).
Variables: P, V, T, N2, N1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M tt}*
H4 : {eval N1 V}*
H5 : {of M bool}
H6 : {of N1 T}
H7 : {of N2 T}
H8 : {of V T}
============================
{of V T}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of (abs T1 R) T}
subgoal 4 is:
{of V T}
subgoal 5 is:
{of V T}
subject_reduction < search.
4 subgoal(s).
Variables: P, V, T, N2, N1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (if M N1 N2) T}
H3 : {eval M ff}*
H4 : {eval N2 V}*
============================
{of V T}
subgoal 2 is:
{of (abs T1 R) T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of V T}
subject_reduction < case H2.
4 subgoal(s).
Variables: P, V, T, N2, N1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M ff}*
H4 : {eval N2 V}*
H5 : {of M bool}
H6 : {of N1 T}
H7 : {of N2 T}
============================
{of V T}
subgoal 2 is:
{of (abs T1 R) T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of V T}
subject_reduction < apply IH to H4 H7.
4 subgoal(s).
Variables: P, V, T, N2, N1, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M ff}*
H4 : {eval N2 V}*
H5 : {of M bool}
H6 : {of N1 T}
H7 : {of N2 T}
H8 : {of V T}
============================
{of V T}
subgoal 2 is:
{of (abs T1 R) T}
subgoal 3 is:
{of V T}
subgoal 4 is:
{of V T}
subject_reduction < search.
3 subgoal(s).
Variables: P, V, T, R, T1
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (abs T1 R) T}
============================
{of (abs T1 R) T}
subgoal 2 is:
{of V T}
subgoal 3 is:
{of V T}
subject_reduction < search.
2 subgoal(s).
Variables: P, V, T, R, T1, N, M
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (app M N) T}
H3 : {eval M (abs T1 R)}*
H4 : {eval (R N) V}*
============================
{of V T}
subgoal 2 is:
{of V T}
subject_reduction < case H2.
2 subgoal(s).
Variables: P, V, T, R, T1, N, M, U
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (abs T1 R)}*
H4 : {eval (R N) V}*
H5 : {of M (arr U T)}
H6 : {of N U}
============================
{of V T}
subgoal 2 is:
{of V T}
subject_reduction < apply IH to H3 H5.
2 subgoal(s).
Variables: P, V, T, R, T1, N, M, U
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (abs T1 R)}*
H4 : {eval (R N) V}*
H5 : {of M (arr U T)}
H6 : {of N U}
H7 : {of (abs T1 R) (arr U T)}
============================
{of V T}
subgoal 2 is:
{of V T}
subject_reduction < case H7.
2 subgoal(s).
Variables: P, V, T, R, T1, N, M, U
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (abs U R)}*
H4 : {eval (R N) V}*
H5 : {of M (arr U T)}
H6 : {of N U}
H8 : {of n1 U |- of (R n1) T}
============================
{of V T}
subgoal 2 is:
{of V T}
subject_reduction < inst H8 with n1 = N.
2 subgoal(s).
Variables: P, V, T, R, T1, N, M, U
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (abs U R)}*
H4 : {eval (R N) V}*
H5 : {of M (arr U T)}
H6 : {of N U}
H8 : {of n1 U |- of (R n1) T}
H9 : {of N U |- of (R N) T}
============================
{of V T}
subgoal 2 is:
{of V T}
subject_reduction < cut H9 with H6.
2 subgoal(s).
Variables: P, V, T, R, T1, N, M, U
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (abs U R)}*
H4 : {eval (R N) V}*
H5 : {of M (arr U T)}
H6 : {of N U}
H8 : {of n1 U |- of (R n1) T}
H9 : {of N U |- of (R N) T}
H10 : {of (R N) T}
============================
{of V T}
subgoal 2 is:
{of V T}
subject_reduction < apply IH to H4 H10.
2 subgoal(s).
Variables: P, V, T, R, T1, N, M, U
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H3 : {eval M (abs U R)}*
H4 : {eval (R N) V}*
H5 : {of M (arr U T)}
H6 : {of N U}
H8 : {of n1 U |- of (R n1) T}
H9 : {of N U |- of (R N) T}
H10 : {of (R N) T}
H11 : {of V T}
============================
{of V T}
subgoal 2 is:
{of V T}
subject_reduction < search.
1 subgoal(s).
Variables: P, V, T, R, T1
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (rec T1 R) T}
H3 : {eval (R (rec T1 R)) V}*
============================
{of V T}
subject_reduction < case H2 (keep).
1 subgoal(s).
Variables: P, V, T, R, T1
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (rec T R) T}
H3 : {eval (R (rec T R)) V}*
H4 : {of n1 T |- of (R n1) T}
============================
{of V T}
subject_reduction < inst H4 with n1 = rec T R.
1 subgoal(s).
Variables: P, V, T, R, T1
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (rec T R) T}
H3 : {eval (R (rec T R)) V}*
H4 : {of n1 T |- of (R n1) T}
H5 : {of (rec T R) T |- of (R (rec T R)) T}
============================
{of V T}
subject_reduction < cut H5 with H2.
1 subgoal(s).
Variables: P, V, T, R, T1
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (rec T R) T}
H3 : {eval (R (rec T R)) V}*
H4 : {of n1 T |- of (R n1) T}
H5 : {of (rec T R) T |- of (R (rec T R)) T}
H6 : {of (R (rec T R)) T}
============================
{of V T}
subject_reduction < apply IH to H3 H6.
1 subgoal(s).
Variables: P, V, T, R, T1
IH : forall P V T, {eval P V}* -> {of P T} -> {of V T}
H2 : {of (rec T R) T}
H3 : {eval (R (rec T R)) V}*
H4 : {of n1 T |- of (R n1) T}
H5 : {of (rec T R) T |- of (R (rec T R)) T}
H6 : {of (R (rec T R)) T}
H7 : {of V T}
============================
{of V T}
subject_reduction < search.
Proof completed.
Abella < Goodbye.