src/ZF/ex/Acc.ML
changeset 438 52e8393ccd77
parent 434 89d45187f04d
child 445 7b6d8b8d4580
equal deleted inserted replaced
437:435875e4b21d 438:52e8393ccd77
    28 
    28 
    29 val [major,indhyp] = goal Acc.thy
    29 val [major,indhyp] = goal Acc.thy
    30     "[| a : acc(r);						\
    30     "[| a : acc(r);						\
    31 \       !!x. [| x: acc(r);  ALL y. <y,x>:r --> P(y) |] ==> P(x)	\
    31 \       !!x. [| x: acc(r);  ALL y. <y,x>:r --> P(y) |] ==> P(x)	\
    32 \    |] ==> P(a)";
    32 \    |] ==> P(a)";
    33 br (major RS Acc.induct) 1;
    33 by (rtac (major RS Acc.induct) 1);
    34 br indhyp 1;
    34 by (rtac indhyp 1);
    35 by (fast_tac ZF_cs 2);
    35 by (fast_tac ZF_cs 2);
    36 by (resolve_tac Acc.intrs 1);
    36 by (resolve_tac Acc.intrs 1);
    37 ba 2;
    37 by (assume_tac 2);
    38 by (fast_tac ZF_cs 1);
    38 by (fast_tac ZF_cs 1);
    39 val acc_induct = result();
    39 val acc_induct = result();
    40 
    40 
    41 goal Acc.thy "wf[acc(r)](r)";
    41 goal Acc.thy "wf[acc(r)](r)";
    42 br wf_onI2 1;
    42 by (rtac wf_onI2 1);
    43 be acc_induct 1;
    43 by (etac acc_induct 1);
    44 by (fast_tac ZF_cs 1);
    44 by (fast_tac ZF_cs 1);
    45 val wf_on_acc = result();
    45 val wf_on_acc = result();
    46 
    46 
    47 (* field(r) <= acc(r) ==> wf(r) *)
    47 (* field(r) <= acc(r) ==> wf(r) *)
    48 val acc_wfI = wf_on_acc RS wf_on_subset_A RS wf_on_field_imp_wf;
    48 val acc_wfI = wf_on_acc RS wf_on_subset_A RS wf_on_field_imp_wf;