src/ZF/AC/WO2_AC16.ML
changeset 1200 d4551b1a6da7
parent 1196 d43c1f7a53fe
child 1208 bc3093616ba4
equal deleted inserted replaced
1199:c8e58352b1a5 1200:d4551b1a6da7
   529 by (eresolve_tac [lt_Ord RSN (2, LeastI)] 1 THEN (assume_tac 1));
   529 by (eresolve_tac [lt_Ord RSN (2, LeastI)] 1 THEN (assume_tac 1));
   530 val main_induct = result();
   530 val main_induct = result();
   531 
   531 
   532 (* ********************************************************************** *)
   532 (* ********************************************************************** *)
   533 (* Lemma to simplify the inductive proof				  *)
   533 (* Lemma to simplify the inductive proof				  *)
   534 (*   - the disired property is a consequence of the inductive assumption  *)
   534 (*   - the desired property is a consequence of the inductive assumption  *)
   535 (* ********************************************************************** *)
   535 (* ********************************************************************** *)
   536 
   536 
   537 val [prem1, prem2, prem3, prem4] = goal thy
   537 val [prem1, prem2, prem3, prem4] = goal thy
   538 	"[| (!!b. b<a ==> F(b) <= S & (ALL x<a. (x<b | (EX Y:F(b). f`x <= Y)) \
   538 	"[| (!!b. b<a ==> F(b) <= S & (ALL x<a. (x<b | (EX Y:F(b). f`x <= Y)) \
   539 \	--> (EX! Y. Y : F(b) & f`x <= Y)));  \
   539 \	--> (EX! Y. Y : F(b) & f`x <= Y)));  \
   559 by (resolve_tac [ex1I] 1);
   559 by (resolve_tac [ex1I] 1);
   560 by (fast_tac (AC_cs addSIs [OUN_I]) 1);
   560 by (fast_tac (AC_cs addSIs [OUN_I]) 1);
   561 by (REPEAT (eresolve_tac [conjE, OUN_E] 1));
   561 by (REPEAT (eresolve_tac [conjE, OUN_E] 1));
   562 by (eresolve_tac [lt_Ord RSN (2, lt_Ord RS Ord_linear_le)] 1 THEN (assume_tac 1));
   562 by (eresolve_tac [lt_Ord RSN (2, lt_Ord RS Ord_linear_le)] 1 THEN (assume_tac 1));
   563 by (dresolve_tac [prem4 RS subsetD] 2 THEN (assume_tac 2));
   563 by (dresolve_tac [prem4 RS subsetD] 2 THEN (assume_tac 2));
   564 by (fast_tac AC_cs 2);
   564 by (fast_tac FOL_cs 2);
   565 by (forward_tac [prem1] 1);
   565 by (forward_tac [prem1] 1);
   566 by (forward_tac [succ_leE] 1);
   566 by (forward_tac [succ_leE] 1);
   567 by (dresolve_tac [prem4 RS subsetD] 1 THEN (assume_tac 1));
   567 by (dresolve_tac [prem4 RS subsetD] 1 THEN (assume_tac 1));
   568 by (eresolve_tac [conjE] 1);
   568 by (eresolve_tac [conjE] 1);
   569 by (dresolve_tac [lt_trans RSN (2, ospec)] 1 THEN (TRYALL assume_tac));
   569 by (dresolve_tac [lt_trans RSN (2, ospec)] 1 THEN (TRYALL assume_tac));
   570 by (dresolve_tac [disjI1 RSN (2, mp)] 1 THEN (assume_tac 1));
   570 by (dresolve_tac [disjI1 RSN (2, mp)] 1 THEN (assume_tac 1));
   571 by (eresolve_tac [ex1_two_eq] 1);
   571 by (eresolve_tac [ex1_two_eq] 1);
   572 by (REPEAT (fast_tac AC_cs 1));
   572 by (REPEAT (fast_tac FOL_cs 1));
   573 val lemma_simp_induct = result();
   573 val lemma_simp_induct = result();
   574 
   574 
   575 (* ********************************************************************** *)
   575 (* ********************************************************************** *)
   576 (* The target theorem							  *)
   576 (* The target theorem							  *)
   577 (* ********************************************************************** *)
   577 (* ********************************************************************** *)