src/ZF/ex/Primrec.ML
changeset 7499 23e090051cb8
parent 6163 be8234f37e48
child 8201 a81d18b0a9b1
equal deleted inserted replaced
7498:1e5585fd3632 7499:23e090051cb8
    73 by (ALLGOALS (asm_simp_tac (simpset() addsimps [lt_ack2])));
    73 by (ALLGOALS (asm_simp_tac (simpset() addsimps [lt_ack2])));
    74 qed "ack_lt_ack_succ2";
    74 qed "ack_lt_ack_succ2";
    75 
    75 
    76 (*PROPERTY A 5, monotonicity for < *)
    76 (*PROPERTY A 5, monotonicity for < *)
    77 Goal "[| j<k; i:nat; k:nat |] ==> ack(i,j) < ack(i,k)";
    77 Goal "[| j<k; i:nat; k:nat |] ==> ack(i,j) < ack(i,k)";
    78 by (forward_tac [lt_nat_in_nat] 1 THEN assume_tac 1);
    78 by (ftac lt_nat_in_nat 1 THEN assume_tac 1);
    79 by (etac succ_lt_induct 1);
    79 by (etac succ_lt_induct 1);
    80 by (assume_tac 1);
    80 by (assume_tac 1);
    81 by (rtac lt_trans 2);
    81 by (rtac lt_trans 2);
    82 by (auto_tac (claset() addIs [ack_lt_ack_succ2], simpset()));
    82 by (auto_tac (claset() addIs [ack_lt_ack_succ2], simpset()));
    83 qed "ack_lt_mono2";
    83 qed "ack_lt_mono2";
   104 by Auto_tac;
   104 by Auto_tac;
   105 qed "ack_lt_ack_succ1";
   105 qed "ack_lt_ack_succ1";
   106 
   106 
   107 (*PROPERTY A 7, monotonicity for < *)
   107 (*PROPERTY A 7, monotonicity for < *)
   108 Goal "[| i<j; j:nat; k:nat |] ==> ack(i,k) < ack(j,k)";
   108 Goal "[| i<j; j:nat; k:nat |] ==> ack(i,k) < ack(j,k)";
   109 by (forward_tac [lt_nat_in_nat] 1 THEN assume_tac 1);
   109 by (ftac lt_nat_in_nat 1 THEN assume_tac 1);
   110 by (etac succ_lt_induct 1);
   110 by (etac succ_lt_induct 1);
   111 by (assume_tac 1);
   111 by (assume_tac 1);
   112 by (rtac lt_trans 2);
   112 by (rtac lt_trans 2);
   113 by (auto_tac (claset() addIs [ack_lt_ack_succ1], simpset()));
   113 by (auto_tac (claset() addIs [ack_lt_ack_succ1], simpset()));
   114 qed "ack_lt_mono1";
   114 qed "ack_lt_mono1";
   225 \         fs : list({f: prim_rec .                               \
   225 \         fs : list({f: prim_rec .                               \
   226 \                    EX kf:nat. ALL l:list(nat).                \
   226 \                    EX kf:nat. ALL l:list(nat).                \
   227 \                       f`l < ack(kf, list_add(l))})            \
   227 \                       f`l < ack(kf, list_add(l))})            \
   228 \      |] ==> EX k:nat. ALL l: list(nat). COMP(g,fs)`l < ack(k, list_add(l))";
   228 \      |] ==> EX k:nat. ALL l: list(nat). COMP(g,fs)`l < ack(k, list_add(l))";
   229 by (Asm_simp_tac 1);
   229 by (Asm_simp_tac 1);
   230 by (forward_tac [list_CollectD] 1);
   230 by (ftac list_CollectD 1);
   231 by (etac (COMP_map_lemma RS bexE) 1);
   231 by (etac (COMP_map_lemma RS bexE) 1);
   232 by (rtac (ballI RS bexI) 1);
   232 by (rtac (ballI RS bexI) 1);
   233 by (etac (bspec RS lt_trans) 1);
   233 by (etac (bspec RS lt_trans) 1);
   234 by (rtac lt_trans 2);
   234 by (rtac lt_trans 2);
   235 by (rtac ack_nest_bound 3);
   235 by (rtac ack_nest_bound 3);